On Monday 28 May 2018 11:50:25 Ioan Eugen Stan wrote:
> Score 1 for me 99 for Sling.
> 
> I found out how to use resources in sling templates with thymeleaf.
> 
> My *ieugen/page* page  looks like this and it works. Now let's see if I
> can manage to render the content using the thymeleaf rendering service
> or another way.
> 
> Note to who is reading: Is there a simpler/better way to solve this?
> 
> <html data-th-with="valueMap=${resource.getValueMap()}">
> <head>
> </head>
> <body>
> <div class="container">
>   <div class="panel panel-primary">
>     <span data-th-text="${valueMap.get('jcr:title')}">SIMPLE PAGE</span>
>   </div>
> </div>
> </body>
> </html>

There is a sample for Thymeleaf with Sling Models:

https://github.com/apache/sling-samples/tree/master/fling

Are you aware of it? Tip: Use Sling Models.

Regards,
O.

> On 28.05.2018 03:35, Ioan Eugen Stan wrote:
> > Hello,
> > 
> > (Dear lazy sling community)
> > 
> > I'm working to implement my first sling application / pages. We have to
> > deploy a *Terms of use* page that need to be translated across multiple
> > languages.
> > 
> > I figured this should be easy with Sling - and it's not quite as I
> > expected :( .
> > 
> > The solution that I have settled for in my head is using thymeleaf
> > templates and sling i18n with json files. However I need some help
> > implementing it.
> > 
> > I'm sharing what is in my head, please help correct if I am wrong. I
> > have been at this (and other sling related stuff - content loading, etc)
> > for the past few days.
> > 
> > My page is going to live in */content**/terms-of-us**e.ht**ml*. It's a
> > *nt:file*, *sling:res**ource* with *sling:resourceType = **ieugen**/page*
> > .
> > 
> > Now, let's put translations for the page under 
> > */lib/trans**lations/content/t**erms**-of-use**.htlm/{english**.**json*,
> > *deuts**ch.json}* . These files should follow the format described in [1].
> > 
> > My goal is for the content of the "/content/terms-of-use.html" node to
> > be a thymeleaf template itself. This template will use attributes like
> > th-text="#{text-id-from-translation-file}".
> > 
> > Now, the script "*ieu**gen/page*" should to the following:
> > 
> > - take the content of the JCR node
> > 
> > - load the proper translation file based on the requested language and
> > the node currently being rendered.
> > 
> > - render the content of the node (thymeleaf template - or any other
> > template language - handlebars?? ) by providing a context with the
> > translation files loaded
> > 
> > - extra: the content might be rendered inside a layout defined by
> > ieugen/page script - with common headers and footers.
> > 
> > My goal is to be able to create pages that are easy to internationalize.
> > 
> > So far I have a few setbacks:
> > 
> > 1. I don't know how to render resource properties.
> > 
> > 2. I don't know how to render a template inside a script.
> > 
> > So far, my script looks like this:
> > 
> > <!DOCTYPE html>
> > <html
> > data-th-with="*valueMap=${resource.adaptTo(@org.apache.sling.api.resource.
> > ValueMap@class)}*"> <head>
> >   <!-- Common head -->
> > </head>
> > <body>
> > <div class="container">
> >   <span data-th-text="${resource}">This works prints the resource </span>
> >   <span data-th-text="${valueMap.attribute['jcr:title']}">*This fails -
> > valueMap is null* </span>
> >   <div>
> >      <p>*How do I render node content here**?**Node content is a
> > thymeleaf? template* </p>
> >   </div>
> > </div>
> > <footer>Common footer</footer>
> > </body>
> > </html>
> > 
> > Thanks,
> > 
> > [1]
> > https://sling.apache.org/documentation/bundles/internationalization-suppor
> > t-i18n.html#json-file-based

Reply via email to