399° Festino di Santa Rosalia dal 10 al 15 luglio 2023

Long live Palermo and Santa Rosalia

This year, Palermo celebrates a journey that began in 1624 and now marks 400 years of history and traditions.
It is the 400th anniversary of the discovery of the miraculous body of Saint Rosalia, the patron saint of the city of Palermo. A symbol of rebirth and hope.

La Santuzza is celebrated with a rich calendar of events that will continue until 2025, enlivening the provincial territory of the Sicilian capital.

Read more

Video: Preghiera a Rosalia di e con Salvo Piparo

BANNER - STORY

THE STORY OF SANTA ROSALIA AND THE FESTINO


Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> structureService.getStructureAttrattoreKey()  [in template "20099#20135#153060" at line 11, column 39]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign attrattoreStructureKey = stru...  [in template "20099#20135#153060" at line 11, column 5]
----
1<#-- CAROSELLO MULTITIPO 05/07/2023--> 
2 
3<#assign showTemplate = false /> 
4<#assign emptyEntries = false /> 
5 
6<#assign structureService = serviceLocator.findService("it.inera.palermo.structure.service.StructureService")> 
7<#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 
8 
9<#if entries?has_content>  
10    <#assign showTemplate = true /> 
11    <#assign attrattoreStructureKey = structureService.getStructureAttrattoreKey()> 
12    <#assign eventoStructureKey = structureService.getStructureEventoKey()> 
13    <#assign itinerarioStructureKey = structureService.getStructureItinerarioKey()> 
14    <#assign ricettaStructureKey = structureService.getStructureRicettaKey()> 
15    <#assign luogoStructureKey = structureService.getStructureLuogoKey()> 
16    <#assign categoriaStructureKey = "34431"> 
17     
18    <#assign layout = themeDisplay.getLayout()/> 
19    <#assign currentSite = themeDisplay.getSiteGroup()/> 
20    <#assign currentSiteUrl = currentSite.getPathFriendlyURL(false, themeDisplay)/> 
21    <#assign currentSiteFriendlyUrl = currentSite.getFriendlyURL()/> 
22 
23    <#assign count = 1/> 
24    <#list entries as curEntry> 
25        <#assign assetRenderer = curEntry.getAssetRenderer()/> 
26        <#if validator.isNotNull(assetRenderer)> 
27            <#assign className = assetRenderer.getClassName() /> 
28            <#if className == "com.liferay.journal.model.JournalArticle"> 
29                <#assign ja = assetRenderer.getArticle() /> 
30                <#assign structureId = ja.getStructureId() /> 
31                 
32                <#if showTemplate && structureId != attrattoreStructureKey && structureId != eventoStructureKey  
33                	&& structureId != itinerarioStructureKey && structureId != ricettaStructureKey  
34                	&& structureId != luogoStructureKey && structureId != categoriaStructureKey> 
35                    <#assign showTemplate = false /> 
36                </#if> 
37            <#else> 
38                <#assign showTemplate = false /> 
39            </#if> 
40        <#else> 
41            <#assign showTemplate = false /> 
42        </#if> 
43    </#list> 
44<#else> 
45    <#assign emptyEntries = true /> 
46</#if>  
47 
48<#if !emptyEntries>  
49    <#if showTemplate> 
50    <div class="container mb-5"> 
51        <div class="row"> 
52        <div class="col-12"> 
53            <div class="tab-content category-offers" id="offer-tab-content"> 
54            <div class="tab-pane fade show active" id="visite-guidate" role="tabpanel" aria-labelledby="visite-guidate-label"> 
55                <div class="row"> 
56                <div class="col-12"> 
57                    <div class="card-carousel owl-carousel std-card-carousel" data-carousel="{&quot;nav&quot;:true,&quot;navText&quot;:[&quot;&lt;i class='icon-angle-left'&gt;&lt;/i&gt;&quot;,&quot;&lt;i class='icon-angle-right'&gt;&lt;/i&gt;&quot;],&quot;autoplay&quot;:false,&quot;autoplayHoverPause&quot;:true,&quot;responsiveClass&quot;:true,&quot;responsive&quot;:{&quot;0&quot;:{&quot;items&quot;:1,&quot;slideBy&quot;:1},&quot;480&quot;:{&quot;items&quot;:2,&quot;slideBy&quot;:2},&quot;768&quot;:{&quot;items&quot;:3,&quot;slideBy&quot;:3}}}"> 
58                     
59                        <#list entries as curEntry> 
60                            <#assign assetRenderer = curEntry.getAssetRenderer()/> 
61                            <#assign ja = assetRenderer.getArticle() /> 
62                            <#assign structureId = ja.getStructureId() /> 
63                            <#assign langId = themeDisplay.getLanguageId() /> 
64                            <#assign contentByLocale = ja.getContentByLocale(themeDisplay.getLanguageId()) /> 
65                             
66						    <#assign colorebordo = "border-bottom-yellow"> 
67						    <#assign subpage = "luogo"> 
68                            <#assign destinationPage = "" /> 
69                            <#assign url = ""> 
70                            <#assign textAltImg = "" /> 
71                            <#assign titolo = ""> 
72                            <#assign sottotitolo_abstract = ""> 
73 
74                            <#if structureId == categoriaStructureKey> 
75 
76                                <#assign document = saxReaderUtil.read(contentByLocale) > 
77                                <#assign rootElement = document.getRootElement()> 
78                                 
79                                <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
80                                <#assign titolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
81                                 
82                                <#assign xPathSottotitolo = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
83                                <#assign sottotitolo_abstract = xPathSottotitolo.selectSingleNode(rootElement).getStringValue()> 
84                                 
85                                <#assign colorebordo = "border-bottom-yellow"> 
86                                <#assign xPathColorBorder = saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']")> 
87                                <#if xPathColorBorder?? && xPathColorBorder?has_content  
88                                    && saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']")?has_content 
89                                    && (saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue())?? 
90                                    && (saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue())?has_content> 
91                                <#assign colorebordo = saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue()> 
92                                </#if> 
93                                 
94                                <#assign xPathImmagine = saxReaderUtil.createXPath("dynamic-element[@name='immagine']")> 
95                                <#if xPathImmagine?? && xPathImmagine?has_content > 
96                                    <#assign imgNews = xPathImmagine.selectSingleNode(rootElement).getStringValue()> 
97                                    <#if imgNews?? && imgNews?has_content && (imgNews?length > 1)> 
98                                     
99                                    <#attempt> 
100                                        <#assign imgJson = jsonFactoryUtil.createJSONObject(imgNews)> 
101                                        <#assign url = "/documents/"+ imgJson.groupId +"/" +imgJson.classPK +"/"+ imgJson.title +"/"+imgJson.uuid + "?width=600" > 
102                                    <#recover>  
103                                    </#attempt> 
104                                    </#if> 
105                                </#if> 
106                                 
107                                <#assign xPathTextAltImg = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine']")> 
108                                <#assign textAltImg = xPathTextAltImg.selectSingleNode(rootElement).getStringValue()> 
109                                 
110                                <#assign xPathLinkAPagina = saxReaderUtil.createXPath("dynamic-element[@name='link_a_pagina']")> 
111                                <#assign linkToPage = "" > 
112                                 
113                                <#if xPathLinkAPagina?? > 
114                                    <#if xPathLinkAPagina?has_content > 
115                                        <#assign linkAPagina = xPathLinkAPagina.selectSingleNode(rootElement).getStringValue() > 
116                                        <#assign linkAPaginaSplitted = linkAPagina?split("@") > 
117                                        <#assign layoutIdPage = linkAPaginaSplitted?first > 
118                                        <#assign layoutIdPage = getterUtil.getLong(layoutIdPage) > 
119                                        <#assign groupIdPage = linkAPaginaSplitted?last > 
120                                        <#assign groupIdPage = getterUtil.getLong(groupIdPage) > 
121                                         
122                                        <#if layoutIdPage != 0 > 
123                                            <#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
124                                            <#assign contentPage = ""> 
125                                            <#attempt> 
126                                            <#assign contentPage = layoutLocalService.getLayout(groupIdPage, false, layoutIdPage ) > 
127                                            <#if contentPage?? > 
128                                                <#assign linkToPage = contentPage.getFriendlyURL(locale) > 
129                                                <#assign linkToPage = currentSiteUrl + currentSiteFriendlyUrl + linkToPage?trim> 
130                                            </#if> 
131                                            <#recover> 
132                                            </#attempt> 
133                                        </#if> 
134                                         
135                                    </#if> 
136                                </#if> 
137                                 
138                                <#if linkToPage?? && (linkToPage?length == 0 || linkToPage?length == 1) > 
139                                    <#assign xPathLinkEsterno = saxReaderUtil.createXPath("dynamic-element[@name='link_esterno']")> 
140                                    <#assign linkToPage = xPathLinkEsterno.selectSingleNode(rootElement).getStringValue() > 
141                                    <#assign linkToPage = linkToPage?trim> 
142                                </#if> 
143                             
144                                <#if linkToPage?? && (linkToPage?length == 0 || linkToPage?length == 1) > 
145                                    <#assign xPathLinkInterno = saxReaderUtil.createXPath("dynamic-element[@name='link_interno']")> 
146                                    <#assign linkToPage = xPathLinkInterno.selectSingleNode(rootElement).getStringValue() > 
147                                    <#assign linkToPage = linkToPage?trim> 
148                                </#if>  
149                                <#assign destinationPage = linkToPage> 
150                            <#else> 
151                                <#if structureId == attrattoreStructureKey> 
152                                <#assign subpage = "attrazione"> 
153                                <#elseif structureId == eventoStructureKey> 
154                                <#assign subpage = "evento"> 
155                                <#elseif structureId == itinerarioStructureKey> 
156                                <#assign subpage = "itinerario"> 
157                                <#elseif structureId == ricettaStructureKey> 
158                                <#assign subpage = "ricetta"> 
159                                <#elseif structureId == luogoStructureKey> 
160                                <#assign subpage = "luogo"> 
161                                <#else> 
162                                </#if> 
163                                <#--CONTENT BY DEFAULT LOCALE--> 
164                                <#attempt> 
165                                    <#assign contentByDefaultLocale = ja.getContentByLocale(localeUtil.getDefault()) /> 
166                                    <#assign documentByDefaultLocale = saxReaderUtil.read(contentByDefaultLocale) > 
167                                    <#assign rootElementByDefaultLocale = documentByDefaultLocale.getRootElement()> 
168                                        <#assign xPathImmagineListaByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 
169                                        <#if xPathImmagineListaByDefaultLocale?? && xPathImmagineListaByDefaultLocale?has_content> 
170                                            <#if xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?? && xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?has_content> 
171                                                <#assign immagineListaByDefaultLocale = xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()> 
172                                            </#if> 
173                                        </#if> 
174                                        <#assign xPathImmagineBannerByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='banner']")> 
175                                        <#if xPathImmagineBannerByDefaultLocale?? && xPathImmagineBannerByDefaultLocale?has_content> 
176	                                        <#assign immagineBannerByDefaultLocale = xPathImmagineBannerByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()>                            
177	                                        <#if immagineListaByDefaultLocale?trim?has_content> 
178	                                            <#assign immagineByDefaultLocale = immagineListaByDefaultLocale> 
179	                                        <#else> 
180	                                            <#assign immagineByDefaultLocale = immagineBannerByDefaultLocale> 
181	                                        </#if> 
182                                        </#if> 
183                                        <#if validator.isNotNull(immagineByDefaultLocale)> 
184                                            <#attempt> 
185                                                <#assign imgJsonByDefaultLocale = jsonFactoryUtil.createJSONObject(immagineByDefaultLocale)> 
186                                                <#assign url = "/documents/"+ imgJsonByDefaultLocale.groupId +"/" +imgJsonByDefaultLocale.classPK +"/"+ imgJsonByDefaultLocale.title +"/"+imgJsonByDefaultLocale.uuid + "?width=600" > 
187                                            <#recover> 
188                                                <#assign url = ""> 
189                                            </#attempt> 
190                                        </#if> 
191                                <#recover> 
192                                </#attempt> 
193                                <#--CONTENT BY DEFAULT LOCALE--> 
194 
195                                <#assign urlTitle = ja.getUrlTitle() /> 
196                                <#assign document = saxReaderUtil.read(contentByLocale) > 
197                                <#assign rootElement = document.getRootElement()> 
198                                <#assign xPathTitolo = "" /> 
199                                <#assign xPathSottotitolo_abstract = "" /> 
200                                <#assign xPathImmagineBanner = "" /> 
201                                <#assign xPathTextAltImg = "" /> 
202                                <#assign immagineLista = ""> 
203                                <#assign textAltImgLista = ""> 
204                                <#assign immagine = "">   
205                                <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
206                                <#assign xPathSottotitolo_abstract = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
207                                 
208                                <#assign xPathImmagineLista = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 
209                                <#if xPathImmagineLista?? && xPathImmagineLista?has_content> 
210                                    <#if xPathImmagineLista.selectSingleNode(rootElement)?? && xPathImmagineLista.selectSingleNode(rootElement)?has_content> 
211                                        <#assign immagineLista = xPathImmagineLista.selectSingleNode(rootElement).getStringValue()> 
212                                    </#if> 
213                                </#if> 
214                                <#assign xPathTextAltImgLista = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_lista']")> 
215                                <#if xPathTextAltImgLista?? && xPathTextAltImgLista?has_content> 
216                                    <#if xPathTextAltImgLista.selectSingleNode(rootElement)?? && xPathTextAltImgLista.selectSingleNode(rootElement)?has_content> 
217                                        <#assign textAltImgLista = xPathTextAltImgLista.selectSingleNode(rootElement).getStringValue()> 
218                                    </#if> 
219                                </#if> 
220 
221                                <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='banner']")> 
222                                <#assign xPathTextAltImg = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_banner']")> 
223                                <#assign textAltImg = xPathTextAltImg.selectSingleNode(rootElement).getStringValue()> 
224                                <#assign destinationPage = "${detailBaseUrl}/search/-/search/${subpage}/${urlTitle}" /> 
225                                <#assign titolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
226                                <#assign sottotitolo_abstract = xPathSottotitolo_abstract.selectSingleNode(rootElement).getStringValue()>    
227                                 
228                                <#assign immagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
229                                <#if !textAltImg?has_content> 
230                                    <#assign textAltImg = titolo> 
231                                </#if> 
232                                                                 
233                                <#if immagineLista?trim?has_content> 
234                                    <#assign immagine = immagineLista> 
235                                    <#assign textAltImg = textAltImgLista> 
236                                <#else> 
237                                    <#assign immagine = immagineBanner> 
238                                </#if> 
239 
240                                <#if validator.isNotNull(immagine)> 
241                                    <#attempt> 
242                                        <#assign imgJson = jsonFactoryUtil.createJSONObject(immagine)> 
243                                        <#assign url = "/documents/"+ imgJson.groupId +"/" +imgJson.classPK +"/"+ imgJson.title +"/"+imgJson.uuid + "?width=600" > 
244                                    <#recover> 
245                                    </#attempt> 
246                                </#if> 
247                            </#if> 
248                            <div class="card-container col-12 palermo-carousel-item ${colorebordo}"> 
249                                <div class="row"> 
250                                    <div class="card"> 
251                                        <a href="${destinationPage}"> 
252                                            <img class="card-img-top" src="${url}" alt="${textAltImg}"> 
253                                            <div class="card-body"> 
254                                                <h3 class="card-title">${titolo} 
255                                                </h3> 
256                                                <p class="card-text"> 
257                                                    ${sottotitolo_abstract} 
258                                                </p> 
259                                            </div> 
260                                        </a> 
261                                    </div> 
262                                </div> 
263                            </div> 
264                        </#list> 
265                    </div> 
266                </div> 
267                </div> 
268            </div> 
269            </div> 
270        </div> 
271        </div> 
272    </div> 
273    <#else> 
274        <div style="border: 1px solid red; padding:20px;"> 
275            <h3 style="color: red;">Questo template supporta solo contenuti di tipo Web Content con struttura attrattori, eventi, itinerari, ricette, luoghi e proposte di viaggio.</h3> 
276            <h3 style="color: red;">Configurare opportunamente l'aggregatore risorse</h3> 
277        </div> 
278    </#if> 
279    
280</#if> 

Asset Publisher

Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> structureService.getStructureAttrattoreKey()  [in template "20099#20135#153060" at line 11, column 39]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign attrattoreStructureKey = stru...  [in template "20099#20135#153060" at line 11, column 5]
----
1<#-- CAROSELLO MULTITIPO 05/07/2023--> 
2 
3<#assign showTemplate = false /> 
4<#assign emptyEntries = false /> 
5 
6<#assign structureService = serviceLocator.findService("it.inera.palermo.structure.service.StructureService")> 
7<#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 
8 
9<#if entries?has_content>  
10    <#assign showTemplate = true /> 
11    <#assign attrattoreStructureKey = structureService.getStructureAttrattoreKey()> 
12    <#assign eventoStructureKey = structureService.getStructureEventoKey()> 
13    <#assign itinerarioStructureKey = structureService.getStructureItinerarioKey()> 
14    <#assign ricettaStructureKey = structureService.getStructureRicettaKey()> 
15    <#assign luogoStructureKey = structureService.getStructureLuogoKey()> 
16    <#assign categoriaStructureKey = "34431"> 
17     
18    <#assign layout = themeDisplay.getLayout()/> 
19    <#assign currentSite = themeDisplay.getSiteGroup()/> 
20    <#assign currentSiteUrl = currentSite.getPathFriendlyURL(false, themeDisplay)/> 
21    <#assign currentSiteFriendlyUrl = currentSite.getFriendlyURL()/> 
22 
23    <#assign count = 1/> 
24    <#list entries as curEntry> 
25        <#assign assetRenderer = curEntry.getAssetRenderer()/> 
26        <#if validator.isNotNull(assetRenderer)> 
27            <#assign className = assetRenderer.getClassName() /> 
28            <#if className == "com.liferay.journal.model.JournalArticle"> 
29                <#assign ja = assetRenderer.getArticle() /> 
30                <#assign structureId = ja.getStructureId() /> 
31                 
32                <#if showTemplate && structureId != attrattoreStructureKey && structureId != eventoStructureKey  
33                	&& structureId != itinerarioStructureKey && structureId != ricettaStructureKey  
34                	&& structureId != luogoStructureKey && structureId != categoriaStructureKey> 
35                    <#assign showTemplate = false /> 
36                </#if> 
37            <#else> 
38                <#assign showTemplate = false /> 
39            </#if> 
40        <#else> 
41            <#assign showTemplate = false /> 
42        </#if> 
43    </#list> 
44<#else> 
45    <#assign emptyEntries = true /> 
46</#if>  
47 
48<#if !emptyEntries>  
49    <#if showTemplate> 
50    <div class="container mb-5"> 
51        <div class="row"> 
52        <div class="col-12"> 
53            <div class="tab-content category-offers" id="offer-tab-content"> 
54            <div class="tab-pane fade show active" id="visite-guidate" role="tabpanel" aria-labelledby="visite-guidate-label"> 
55                <div class="row"> 
56                <div class="col-12"> 
57                    <div class="card-carousel owl-carousel std-card-carousel" data-carousel="{&quot;nav&quot;:true,&quot;navText&quot;:[&quot;&lt;i class='icon-angle-left'&gt;&lt;/i&gt;&quot;,&quot;&lt;i class='icon-angle-right'&gt;&lt;/i&gt;&quot;],&quot;autoplay&quot;:false,&quot;autoplayHoverPause&quot;:true,&quot;responsiveClass&quot;:true,&quot;responsive&quot;:{&quot;0&quot;:{&quot;items&quot;:1,&quot;slideBy&quot;:1},&quot;480&quot;:{&quot;items&quot;:2,&quot;slideBy&quot;:2},&quot;768&quot;:{&quot;items&quot;:3,&quot;slideBy&quot;:3}}}"> 
58                     
59                        <#list entries as curEntry> 
60                            <#assign assetRenderer = curEntry.getAssetRenderer()/> 
61                            <#assign ja = assetRenderer.getArticle() /> 
62                            <#assign structureId = ja.getStructureId() /> 
63                            <#assign langId = themeDisplay.getLanguageId() /> 
64                            <#assign contentByLocale = ja.getContentByLocale(themeDisplay.getLanguageId()) /> 
65                             
66						    <#assign colorebordo = "border-bottom-yellow"> 
67						    <#assign subpage = "luogo"> 
68                            <#assign destinationPage = "" /> 
69                            <#assign url = ""> 
70                            <#assign textAltImg = "" /> 
71                            <#assign titolo = ""> 
72                            <#assign sottotitolo_abstract = ""> 
73 
74                            <#if structureId == categoriaStructureKey> 
75 
76                                <#assign document = saxReaderUtil.read(contentByLocale) > 
77                                <#assign rootElement = document.getRootElement()> 
78                                 
79                                <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
80                                <#assign titolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
81                                 
82                                <#assign xPathSottotitolo = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
83                                <#assign sottotitolo_abstract = xPathSottotitolo.selectSingleNode(rootElement).getStringValue()> 
84                                 
85                                <#assign colorebordo = "border-bottom-yellow"> 
86                                <#assign xPathColorBorder = saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']")> 
87                                <#if xPathColorBorder?? && xPathColorBorder?has_content  
88                                    && saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']")?has_content 
89                                    && (saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue())?? 
90                                    && (saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue())?has_content> 
91                                <#assign colorebordo = saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue()> 
92                                </#if> 
93                                 
94                                <#assign xPathImmagine = saxReaderUtil.createXPath("dynamic-element[@name='immagine']")> 
95                                <#if xPathImmagine?? && xPathImmagine?has_content > 
96                                    <#assign imgNews = xPathImmagine.selectSingleNode(rootElement).getStringValue()> 
97                                    <#if imgNews?? && imgNews?has_content && (imgNews?length > 1)> 
98                                     
99                                    <#attempt> 
100                                        <#assign imgJson = jsonFactoryUtil.createJSONObject(imgNews)> 
101                                        <#assign url = "/documents/"+ imgJson.groupId +"/" +imgJson.classPK +"/"+ imgJson.title +"/"+imgJson.uuid + "?width=600" > 
102                                    <#recover>  
103                                    </#attempt> 
104                                    </#if> 
105                                </#if> 
106                                 
107                                <#assign xPathTextAltImg = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine']")> 
108                                <#assign textAltImg = xPathTextAltImg.selectSingleNode(rootElement).getStringValue()> 
109                                 
110                                <#assign xPathLinkAPagina = saxReaderUtil.createXPath("dynamic-element[@name='link_a_pagina']")> 
111                                <#assign linkToPage = "" > 
112                                 
113                                <#if xPathLinkAPagina?? > 
114                                    <#if xPathLinkAPagina?has_content > 
115                                        <#assign linkAPagina = xPathLinkAPagina.selectSingleNode(rootElement).getStringValue() > 
116                                        <#assign linkAPaginaSplitted = linkAPagina?split("@") > 
117                                        <#assign layoutIdPage = linkAPaginaSplitted?first > 
118                                        <#assign layoutIdPage = getterUtil.getLong(layoutIdPage) > 
119                                        <#assign groupIdPage = linkAPaginaSplitted?last > 
120                                        <#assign groupIdPage = getterUtil.getLong(groupIdPage) > 
121                                         
122                                        <#if layoutIdPage != 0 > 
123                                            <#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
124                                            <#assign contentPage = ""> 
125                                            <#attempt> 
126                                            <#assign contentPage = layoutLocalService.getLayout(groupIdPage, false, layoutIdPage ) > 
127                                            <#if contentPage?? > 
128                                                <#assign linkToPage = contentPage.getFriendlyURL(locale) > 
129                                                <#assign linkToPage = currentSiteUrl + currentSiteFriendlyUrl + linkToPage?trim> 
130                                            </#if> 
131                                            <#recover> 
132                                            </#attempt> 
133                                        </#if> 
134                                         
135                                    </#if> 
136                                </#if> 
137                                 
138                                <#if linkToPage?? && (linkToPage?length == 0 || linkToPage?length == 1) > 
139                                    <#assign xPathLinkEsterno = saxReaderUtil.createXPath("dynamic-element[@name='link_esterno']")> 
140                                    <#assign linkToPage = xPathLinkEsterno.selectSingleNode(rootElement).getStringValue() > 
141                                    <#assign linkToPage = linkToPage?trim> 
142                                </#if> 
143                             
144                                <#if linkToPage?? && (linkToPage?length == 0 || linkToPage?length == 1) > 
145                                    <#assign xPathLinkInterno = saxReaderUtil.createXPath("dynamic-element[@name='link_interno']")> 
146                                    <#assign linkToPage = xPathLinkInterno.selectSingleNode(rootElement).getStringValue() > 
147                                    <#assign linkToPage = linkToPage?trim> 
148                                </#if>  
149                                <#assign destinationPage = linkToPage> 
150                            <#else> 
151                                <#if structureId == attrattoreStructureKey> 
152                                <#assign subpage = "attrazione"> 
153                                <#elseif structureId == eventoStructureKey> 
154                                <#assign subpage = "evento"> 
155                                <#elseif structureId == itinerarioStructureKey> 
156                                <#assign subpage = "itinerario"> 
157                                <#elseif structureId == ricettaStructureKey> 
158                                <#assign subpage = "ricetta"> 
159                                <#elseif structureId == luogoStructureKey> 
160                                <#assign subpage = "luogo"> 
161                                <#else> 
162                                </#if> 
163                                <#--CONTENT BY DEFAULT LOCALE--> 
164                                <#attempt> 
165                                    <#assign contentByDefaultLocale = ja.getContentByLocale(localeUtil.getDefault()) /> 
166                                    <#assign documentByDefaultLocale = saxReaderUtil.read(contentByDefaultLocale) > 
167                                    <#assign rootElementByDefaultLocale = documentByDefaultLocale.getRootElement()> 
168                                        <#assign xPathImmagineListaByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 
169                                        <#if xPathImmagineListaByDefaultLocale?? && xPathImmagineListaByDefaultLocale?has_content> 
170                                            <#if xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?? && xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?has_content> 
171                                                <#assign immagineListaByDefaultLocale = xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()> 
172                                            </#if> 
173                                        </#if> 
174                                        <#assign xPathImmagineBannerByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='banner']")> 
175                                        <#if xPathImmagineBannerByDefaultLocale?? && xPathImmagineBannerByDefaultLocale?has_content> 
176	                                        <#assign immagineBannerByDefaultLocale = xPathImmagineBannerByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()>                            
177	                                        <#if immagineListaByDefaultLocale?trim?has_content> 
178	                                            <#assign immagineByDefaultLocale = immagineListaByDefaultLocale> 
179	                                        <#else> 
180	                                            <#assign immagineByDefaultLocale = immagineBannerByDefaultLocale> 
181	                                        </#if> 
182                                        </#if> 
183                                        <#if validator.isNotNull(immagineByDefaultLocale)> 
184                                            <#attempt> 
185                                                <#assign imgJsonByDefaultLocale = jsonFactoryUtil.createJSONObject(immagineByDefaultLocale)> 
186                                                <#assign url = "/documents/"+ imgJsonByDefaultLocale.groupId +"/" +imgJsonByDefaultLocale.classPK +"/"+ imgJsonByDefaultLocale.title +"/"+imgJsonByDefaultLocale.uuid + "?width=600" > 
187                                            <#recover> 
188                                                <#assign url = ""> 
189                                            </#attempt> 
190                                        </#if> 
191                                <#recover> 
192                                </#attempt> 
193                                <#--CONTENT BY DEFAULT LOCALE--> 
194 
195                                <#assign urlTitle = ja.getUrlTitle() /> 
196                                <#assign document = saxReaderUtil.read(contentByLocale) > 
197                                <#assign rootElement = document.getRootElement()> 
198                                <#assign xPathTitolo = "" /> 
199                                <#assign xPathSottotitolo_abstract = "" /> 
200                                <#assign xPathImmagineBanner = "" /> 
201                                <#assign xPathTextAltImg = "" /> 
202                                <#assign immagineLista = ""> 
203                                <#assign textAltImgLista = ""> 
204                                <#assign immagine = "">   
205                                <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
206                                <#assign xPathSottotitolo_abstract = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
207                                 
208                                <#assign xPathImmagineLista = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 
209                                <#if xPathImmagineLista?? && xPathImmagineLista?has_content> 
210                                    <#if xPathImmagineLista.selectSingleNode(rootElement)?? && xPathImmagineLista.selectSingleNode(rootElement)?has_content> 
211                                        <#assign immagineLista = xPathImmagineLista.selectSingleNode(rootElement).getStringValue()> 
212                                    </#if> 
213                                </#if> 
214                                <#assign xPathTextAltImgLista = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_lista']")> 
215                                <#if xPathTextAltImgLista?? && xPathTextAltImgLista?has_content> 
216                                    <#if xPathTextAltImgLista.selectSingleNode(rootElement)?? && xPathTextAltImgLista.selectSingleNode(rootElement)?has_content> 
217                                        <#assign textAltImgLista = xPathTextAltImgLista.selectSingleNode(rootElement).getStringValue()> 
218                                    </#if> 
219                                </#if> 
220 
221                                <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='banner']")> 
222                                <#assign xPathTextAltImg = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_banner']")> 
223                                <#assign textAltImg = xPathTextAltImg.selectSingleNode(rootElement).getStringValue()> 
224                                <#assign destinationPage = "${detailBaseUrl}/search/-/search/${subpage}/${urlTitle}" /> 
225                                <#assign titolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
226                                <#assign sottotitolo_abstract = xPathSottotitolo_abstract.selectSingleNode(rootElement).getStringValue()>    
227                                 
228                                <#assign immagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
229                                <#if !textAltImg?has_content> 
230                                    <#assign textAltImg = titolo> 
231                                </#if> 
232                                                                 
233                                <#if immagineLista?trim?has_content> 
234                                    <#assign immagine = immagineLista> 
235                                    <#assign textAltImg = textAltImgLista> 
236                                <#else> 
237                                    <#assign immagine = immagineBanner> 
238                                </#if> 
239 
240                                <#if validator.isNotNull(immagine)> 
241                                    <#attempt> 
242                                        <#assign imgJson = jsonFactoryUtil.createJSONObject(immagine)> 
243                                        <#assign url = "/documents/"+ imgJson.groupId +"/" +imgJson.classPK +"/"+ imgJson.title +"/"+imgJson.uuid + "?width=600" > 
244                                    <#recover> 
245                                    </#attempt> 
246                                </#if> 
247                            </#if> 
248                            <div class="card-container col-12 palermo-carousel-item ${colorebordo}"> 
249                                <div class="row"> 
250                                    <div class="card"> 
251                                        <a href="${destinationPage}"> 
252                                            <img class="card-img-top" src="${url}" alt="${textAltImg}"> 
253                                            <div class="card-body"> 
254                                                <h3 class="card-title">${titolo} 
255                                                </h3> 
256                                                <p class="card-text"> 
257                                                    ${sottotitolo_abstract} 
258                                                </p> 
259                                            </div> 
260                                        </a> 
261                                    </div> 
262                                </div> 
263                            </div> 
264                        </#list> 
265                    </div> 
266                </div> 
267                </div> 
268            </div> 
269            </div> 
270        </div> 
271        </div> 
272    </div> 
273    <#else> 
274        <div style="border: 1px solid red; padding:20px;"> 
275            <h3 style="color: red;">Questo template supporta solo contenuti di tipo Web Content con struttura attrattori, eventi, itinerari, ricette, luoghi e proposte di viaggio.</h3> 
276            <h3 style="color: red;">Configurare opportunamente l'aggregatore risorse</h3> 
277        </div> 
278    </#if> 
279    
280</#if> 

Asset Publisher

Asset Publisher

Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> structureService.getStructureAttrattoreKey()  [in template "20099#20135#153060" at line 11, column 39]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign attrattoreStructureKey = stru...  [in template "20099#20135#153060" at line 11, column 5]
----
1<#-- CAROSELLO MULTITIPO 05/07/2023--> 
2 
3<#assign showTemplate = false /> 
4<#assign emptyEntries = false /> 
5 
6<#assign structureService = serviceLocator.findService("it.inera.palermo.structure.service.StructureService")> 
7<#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 
8 
9<#if entries?has_content>  
10    <#assign showTemplate = true /> 
11    <#assign attrattoreStructureKey = structureService.getStructureAttrattoreKey()> 
12    <#assign eventoStructureKey = structureService.getStructureEventoKey()> 
13    <#assign itinerarioStructureKey = structureService.getStructureItinerarioKey()> 
14    <#assign ricettaStructureKey = structureService.getStructureRicettaKey()> 
15    <#assign luogoStructureKey = structureService.getStructureLuogoKey()> 
16    <#assign categoriaStructureKey = "34431"> 
17     
18    <#assign layout = themeDisplay.getLayout()/> 
19    <#assign currentSite = themeDisplay.getSiteGroup()/> 
20    <#assign currentSiteUrl = currentSite.getPathFriendlyURL(false, themeDisplay)/> 
21    <#assign currentSiteFriendlyUrl = currentSite.getFriendlyURL()/> 
22 
23    <#assign count = 1/> 
24    <#list entries as curEntry> 
25        <#assign assetRenderer = curEntry.getAssetRenderer()/> 
26        <#if validator.isNotNull(assetRenderer)> 
27            <#assign className = assetRenderer.getClassName() /> 
28            <#if className == "com.liferay.journal.model.JournalArticle"> 
29                <#assign ja = assetRenderer.getArticle() /> 
30                <#assign structureId = ja.getStructureId() /> 
31                 
32                <#if showTemplate && structureId != attrattoreStructureKey && structureId != eventoStructureKey  
33                	&& structureId != itinerarioStructureKey && structureId != ricettaStructureKey  
34                	&& structureId != luogoStructureKey && structureId != categoriaStructureKey> 
35                    <#assign showTemplate = false /> 
36                </#if> 
37            <#else> 
38                <#assign showTemplate = false /> 
39            </#if> 
40        <#else> 
41            <#assign showTemplate = false /> 
42        </#if> 
43    </#list> 
44<#else> 
45    <#assign emptyEntries = true /> 
46</#if>  
47 
48<#if !emptyEntries>  
49    <#if showTemplate> 
50    <div class="container mb-5"> 
51        <div class="row"> 
52        <div class="col-12"> 
53            <div class="tab-content category-offers" id="offer-tab-content"> 
54            <div class="tab-pane fade show active" id="visite-guidate" role="tabpanel" aria-labelledby="visite-guidate-label"> 
55                <div class="row"> 
56                <div class="col-12"> 
57                    <div class="card-carousel owl-carousel std-card-carousel" data-carousel="{&quot;nav&quot;:true,&quot;navText&quot;:[&quot;&lt;i class='icon-angle-left'&gt;&lt;/i&gt;&quot;,&quot;&lt;i class='icon-angle-right'&gt;&lt;/i&gt;&quot;],&quot;autoplay&quot;:false,&quot;autoplayHoverPause&quot;:true,&quot;responsiveClass&quot;:true,&quot;responsive&quot;:{&quot;0&quot;:{&quot;items&quot;:1,&quot;slideBy&quot;:1},&quot;480&quot;:{&quot;items&quot;:2,&quot;slideBy&quot;:2},&quot;768&quot;:{&quot;items&quot;:3,&quot;slideBy&quot;:3}}}"> 
58                     
59                        <#list entries as curEntry> 
60                            <#assign assetRenderer = curEntry.getAssetRenderer()/> 
61                            <#assign ja = assetRenderer.getArticle() /> 
62                            <#assign structureId = ja.getStructureId() /> 
63                            <#assign langId = themeDisplay.getLanguageId() /> 
64                            <#assign contentByLocale = ja.getContentByLocale(themeDisplay.getLanguageId()) /> 
65                             
66						    <#assign colorebordo = "border-bottom-yellow"> 
67						    <#assign subpage = "luogo"> 
68                            <#assign destinationPage = "" /> 
69                            <#assign url = ""> 
70                            <#assign textAltImg = "" /> 
71                            <#assign titolo = ""> 
72                            <#assign sottotitolo_abstract = ""> 
73 
74                            <#if structureId == categoriaStructureKey> 
75 
76                                <#assign document = saxReaderUtil.read(contentByLocale) > 
77                                <#assign rootElement = document.getRootElement()> 
78                                 
79                                <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
80                                <#assign titolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
81                                 
82                                <#assign xPathSottotitolo = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
83                                <#assign sottotitolo_abstract = xPathSottotitolo.selectSingleNode(rootElement).getStringValue()> 
84                                 
85                                <#assign colorebordo = "border-bottom-yellow"> 
86                                <#assign xPathColorBorder = saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']")> 
87                                <#if xPathColorBorder?? && xPathColorBorder?has_content  
88                                    && saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']")?has_content 
89                                    && (saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue())?? 
90                                    && (saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue())?has_content> 
91                                <#assign colorebordo = saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue()> 
92                                </#if> 
93                                 
94                                <#assign xPathImmagine = saxReaderUtil.createXPath("dynamic-element[@name='immagine']")> 
95                                <#if xPathImmagine?? && xPathImmagine?has_content > 
96                                    <#assign imgNews = xPathImmagine.selectSingleNode(rootElement).getStringValue()> 
97                                    <#if imgNews?? && imgNews?has_content && (imgNews?length > 1)> 
98                                     
99                                    <#attempt> 
100                                        <#assign imgJson = jsonFactoryUtil.createJSONObject(imgNews)> 
101                                        <#assign url = "/documents/"+ imgJson.groupId +"/" +imgJson.classPK +"/"+ imgJson.title +"/"+imgJson.uuid + "?width=600" > 
102                                    <#recover>  
103                                    </#attempt> 
104                                    </#if> 
105                                </#if> 
106                                 
107                                <#assign xPathTextAltImg = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine']")> 
108                                <#assign textAltImg = xPathTextAltImg.selectSingleNode(rootElement).getStringValue()> 
109                                 
110                                <#assign xPathLinkAPagina = saxReaderUtil.createXPath("dynamic-element[@name='link_a_pagina']")> 
111                                <#assign linkToPage = "" > 
112                                 
113                                <#if xPathLinkAPagina?? > 
114                                    <#if xPathLinkAPagina?has_content > 
115                                        <#assign linkAPagina = xPathLinkAPagina.selectSingleNode(rootElement).getStringValue() > 
116                                        <#assign linkAPaginaSplitted = linkAPagina?split("@") > 
117                                        <#assign layoutIdPage = linkAPaginaSplitted?first > 
118                                        <#assign layoutIdPage = getterUtil.getLong(layoutIdPage) > 
119                                        <#assign groupIdPage = linkAPaginaSplitted?last > 
120                                        <#assign groupIdPage = getterUtil.getLong(groupIdPage) > 
121                                         
122                                        <#if layoutIdPage != 0 > 
123                                            <#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
124                                            <#assign contentPage = ""> 
125                                            <#attempt> 
126                                            <#assign contentPage = layoutLocalService.getLayout(groupIdPage, false, layoutIdPage ) > 
127                                            <#if contentPage?? > 
128                                                <#assign linkToPage = contentPage.getFriendlyURL(locale) > 
129                                                <#assign linkToPage = currentSiteUrl + currentSiteFriendlyUrl + linkToPage?trim> 
130                                            </#if> 
131                                            <#recover> 
132                                            </#attempt> 
133                                        </#if> 
134                                         
135                                    </#if> 
136                                </#if> 
137                                 
138                                <#if linkToPage?? && (linkToPage?length == 0 || linkToPage?length == 1) > 
139                                    <#assign xPathLinkEsterno = saxReaderUtil.createXPath("dynamic-element[@name='link_esterno']")> 
140                                    <#assign linkToPage = xPathLinkEsterno.selectSingleNode(rootElement).getStringValue() > 
141                                    <#assign linkToPage = linkToPage?trim> 
142                                </#if> 
143                             
144                                <#if linkToPage?? && (linkToPage?length == 0 || linkToPage?length == 1) > 
145                                    <#assign xPathLinkInterno = saxReaderUtil.createXPath("dynamic-element[@name='link_interno']")> 
146                                    <#assign linkToPage = xPathLinkInterno.selectSingleNode(rootElement).getStringValue() > 
147                                    <#assign linkToPage = linkToPage?trim> 
148                                </#if>  
149                                <#assign destinationPage = linkToPage> 
150                            <#else> 
151                                <#if structureId == attrattoreStructureKey> 
152                                <#assign subpage = "attrazione"> 
153                                <#elseif structureId == eventoStructureKey> 
154                                <#assign subpage = "evento"> 
155                                <#elseif structureId == itinerarioStructureKey> 
156                                <#assign subpage = "itinerario"> 
157                                <#elseif structureId == ricettaStructureKey> 
158                                <#assign subpage = "ricetta"> 
159                                <#elseif structureId == luogoStructureKey> 
160                                <#assign subpage = "luogo"> 
161                                <#else> 
162                                </#if> 
163                                <#--CONTENT BY DEFAULT LOCALE--> 
164                                <#attempt> 
165                                    <#assign contentByDefaultLocale = ja.getContentByLocale(localeUtil.getDefault()) /> 
166                                    <#assign documentByDefaultLocale = saxReaderUtil.read(contentByDefaultLocale) > 
167                                    <#assign rootElementByDefaultLocale = documentByDefaultLocale.getRootElement()> 
168                                        <#assign xPathImmagineListaByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 
169                                        <#if xPathImmagineListaByDefaultLocale?? && xPathImmagineListaByDefaultLocale?has_content> 
170                                            <#if xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?? && xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?has_content> 
171                                                <#assign immagineListaByDefaultLocale = xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()> 
172                                            </#if> 
173                                        </#if> 
174                                        <#assign xPathImmagineBannerByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='banner']")> 
175                                        <#if xPathImmagineBannerByDefaultLocale?? && xPathImmagineBannerByDefaultLocale?has_content> 
176	                                        <#assign immagineBannerByDefaultLocale = xPathImmagineBannerByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()>                            
177	                                        <#if immagineListaByDefaultLocale?trim?has_content> 
178	                                            <#assign immagineByDefaultLocale = immagineListaByDefaultLocale> 
179	                                        <#else> 
180	                                            <#assign immagineByDefaultLocale = immagineBannerByDefaultLocale> 
181	                                        </#if> 
182                                        </#if> 
183                                        <#if validator.isNotNull(immagineByDefaultLocale)> 
184                                            <#attempt> 
185                                                <#assign imgJsonByDefaultLocale = jsonFactoryUtil.createJSONObject(immagineByDefaultLocale)> 
186                                                <#assign url = "/documents/"+ imgJsonByDefaultLocale.groupId +"/" +imgJsonByDefaultLocale.classPK +"/"+ imgJsonByDefaultLocale.title +"/"+imgJsonByDefaultLocale.uuid + "?width=600" > 
187                                            <#recover> 
188                                                <#assign url = ""> 
189                                            </#attempt> 
190                                        </#if> 
191                                <#recover> 
192                                </#attempt> 
193                                <#--CONTENT BY DEFAULT LOCALE--> 
194 
195                                <#assign urlTitle = ja.getUrlTitle() /> 
196                                <#assign document = saxReaderUtil.read(contentByLocale) > 
197                                <#assign rootElement = document.getRootElement()> 
198                                <#assign xPathTitolo = "" /> 
199                                <#assign xPathSottotitolo_abstract = "" /> 
200                                <#assign xPathImmagineBanner = "" /> 
201                                <#assign xPathTextAltImg = "" /> 
202                                <#assign immagineLista = ""> 
203                                <#assign textAltImgLista = ""> 
204                                <#assign immagine = "">   
205                                <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
206                                <#assign xPathSottotitolo_abstract = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
207                                 
208                                <#assign xPathImmagineLista = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 
209                                <#if xPathImmagineLista?? && xPathImmagineLista?has_content> 
210                                    <#if xPathImmagineLista.selectSingleNode(rootElement)?? && xPathImmagineLista.selectSingleNode(rootElement)?has_content> 
211                                        <#assign immagineLista = xPathImmagineLista.selectSingleNode(rootElement).getStringValue()> 
212                                    </#if> 
213                                </#if> 
214                                <#assign xPathTextAltImgLista = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_lista']")> 
215                                <#if xPathTextAltImgLista?? && xPathTextAltImgLista?has_content> 
216                                    <#if xPathTextAltImgLista.selectSingleNode(rootElement)?? && xPathTextAltImgLista.selectSingleNode(rootElement)?has_content> 
217                                        <#assign textAltImgLista = xPathTextAltImgLista.selectSingleNode(rootElement).getStringValue()> 
218                                    </#if> 
219                                </#if> 
220 
221                                <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='banner']")> 
222                                <#assign xPathTextAltImg = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_banner']")> 
223                                <#assign textAltImg = xPathTextAltImg.selectSingleNode(rootElement).getStringValue()> 
224                                <#assign destinationPage = "${detailBaseUrl}/search/-/search/${subpage}/${urlTitle}" /> 
225                                <#assign titolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
226                                <#assign sottotitolo_abstract = xPathSottotitolo_abstract.selectSingleNode(rootElement).getStringValue()>    
227                                 
228                                <#assign immagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
229                                <#if !textAltImg?has_content> 
230                                    <#assign textAltImg = titolo> 
231                                </#if> 
232                                                                 
233                                <#if immagineLista?trim?has_content> 
234                                    <#assign immagine = immagineLista> 
235                                    <#assign textAltImg = textAltImgLista> 
236                                <#else> 
237                                    <#assign immagine = immagineBanner> 
238                                </#if> 
239 
240                                <#if validator.isNotNull(immagine)> 
241                                    <#attempt> 
242                                        <#assign imgJson = jsonFactoryUtil.createJSONObject(immagine)> 
243                                        <#assign url = "/documents/"+ imgJson.groupId +"/" +imgJson.classPK +"/"+ imgJson.title +"/"+imgJson.uuid + "?width=600" > 
244                                    <#recover> 
245                                    </#attempt> 
246                                </#if> 
247                            </#if> 
248                            <div class="card-container col-12 palermo-carousel-item ${colorebordo}"> 
249                                <div class="row"> 
250                                    <div class="card"> 
251                                        <a href="${destinationPage}"> 
252                                            <img class="card-img-top" src="${url}" alt="${textAltImg}"> 
253                                            <div class="card-body"> 
254                                                <h3 class="card-title">${titolo} 
255                                                </h3> 
256                                                <p class="card-text"> 
257                                                    ${sottotitolo_abstract} 
258                                                </p> 
259                                            </div> 
260                                        </a> 
261                                    </div> 
262                                </div> 
263                            </div> 
264                        </#list> 
265                    </div> 
266                </div> 
267                </div> 
268            </div> 
269            </div> 
270        </div> 
271        </div> 
272    </div> 
273    <#else> 
274        <div style="border: 1px solid red; padding:20px;"> 
275            <h3 style="color: red;">Questo template supporta solo contenuti di tipo Web Content con struttura attrattori, eventi, itinerari, ricette, luoghi e proposte di viaggio.</h3> 
276            <h3 style="color: red;">Configurare opportunamente l'aggregatore risorse</h3> 
277        </div> 
278    </#if> 
279    
280</#if> 

Asset Publisher

Asset Publisher

Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> structureService.getStructureAttrattoreKey()  [in template "20099#20135#153060" at line 11, column 39]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign attrattoreStructureKey = stru...  [in template "20099#20135#153060" at line 11, column 5]
----
1<#-- CAROSELLO MULTITIPO 05/07/2023--> 
2 
3<#assign showTemplate = false /> 
4<#assign emptyEntries = false /> 
5 
6<#assign structureService = serviceLocator.findService("it.inera.palermo.structure.service.StructureService")> 
7<#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 
8 
9<#if entries?has_content>  
10    <#assign showTemplate = true /> 
11    <#assign attrattoreStructureKey = structureService.getStructureAttrattoreKey()> 
12    <#assign eventoStructureKey = structureService.getStructureEventoKey()> 
13    <#assign itinerarioStructureKey = structureService.getStructureItinerarioKey()> 
14    <#assign ricettaStructureKey = structureService.getStructureRicettaKey()> 
15    <#assign luogoStructureKey = structureService.getStructureLuogoKey()> 
16    <#assign categoriaStructureKey = "34431"> 
17     
18    <#assign layout = themeDisplay.getLayout()/> 
19    <#assign currentSite = themeDisplay.getSiteGroup()/> 
20    <#assign currentSiteUrl = currentSite.getPathFriendlyURL(false, themeDisplay)/> 
21    <#assign currentSiteFriendlyUrl = currentSite.getFriendlyURL()/> 
22 
23    <#assign count = 1/> 
24    <#list entries as curEntry> 
25        <#assign assetRenderer = curEntry.getAssetRenderer()/> 
26        <#if validator.isNotNull(assetRenderer)> 
27            <#assign className = assetRenderer.getClassName() /> 
28            <#if className == "com.liferay.journal.model.JournalArticle"> 
29                <#assign ja = assetRenderer.getArticle() /> 
30                <#assign structureId = ja.getStructureId() /> 
31                 
32                <#if showTemplate && structureId != attrattoreStructureKey && structureId != eventoStructureKey  
33                	&& structureId != itinerarioStructureKey && structureId != ricettaStructureKey  
34                	&& structureId != luogoStructureKey && structureId != categoriaStructureKey> 
35                    <#assign showTemplate = false /> 
36                </#if> 
37            <#else> 
38                <#assign showTemplate = false /> 
39            </#if> 
40        <#else> 
41            <#assign showTemplate = false /> 
42        </#if> 
43    </#list> 
44<#else> 
45    <#assign emptyEntries = true /> 
46</#if>  
47 
48<#if !emptyEntries>  
49    <#if showTemplate> 
50    <div class="container mb-5"> 
51        <div class="row"> 
52        <div class="col-12"> 
53            <div class="tab-content category-offers" id="offer-tab-content"> 
54            <div class="tab-pane fade show active" id="visite-guidate" role="tabpanel" aria-labelledby="visite-guidate-label"> 
55                <div class="row"> 
56                <div class="col-12"> 
57                    <div class="card-carousel owl-carousel std-card-carousel" data-carousel="{&quot;nav&quot;:true,&quot;navText&quot;:[&quot;&lt;i class='icon-angle-left'&gt;&lt;/i&gt;&quot;,&quot;&lt;i class='icon-angle-right'&gt;&lt;/i&gt;&quot;],&quot;autoplay&quot;:false,&quot;autoplayHoverPause&quot;:true,&quot;responsiveClass&quot;:true,&quot;responsive&quot;:{&quot;0&quot;:{&quot;items&quot;:1,&quot;slideBy&quot;:1},&quot;480&quot;:{&quot;items&quot;:2,&quot;slideBy&quot;:2},&quot;768&quot;:{&quot;items&quot;:3,&quot;slideBy&quot;:3}}}"> 
58                     
59                        <#list entries as curEntry> 
60                            <#assign assetRenderer = curEntry.getAssetRenderer()/> 
61                            <#assign ja = assetRenderer.getArticle() /> 
62                            <#assign structureId = ja.getStructureId() /> 
63                            <#assign langId = themeDisplay.getLanguageId() /> 
64                            <#assign contentByLocale = ja.getContentByLocale(themeDisplay.getLanguageId()) /> 
65                             
66						    <#assign colorebordo = "border-bottom-yellow"> 
67						    <#assign subpage = "luogo"> 
68                            <#assign destinationPage = "" /> 
69                            <#assign url = ""> 
70                            <#assign textAltImg = "" /> 
71                            <#assign titolo = ""> 
72                            <#assign sottotitolo_abstract = ""> 
73 
74                            <#if structureId == categoriaStructureKey> 
75 
76                                <#assign document = saxReaderUtil.read(contentByLocale) > 
77                                <#assign rootElement = document.getRootElement()> 
78                                 
79                                <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
80                                <#assign titolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
81                                 
82                                <#assign xPathSottotitolo = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
83                                <#assign sottotitolo_abstract = xPathSottotitolo.selectSingleNode(rootElement).getStringValue()> 
84                                 
85                                <#assign colorebordo = "border-bottom-yellow"> 
86                                <#assign xPathColorBorder = saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']")> 
87                                <#if xPathColorBorder?? && xPathColorBorder?has_content  
88                                    && saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']")?has_content 
89                                    && (saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue())?? 
90                                    && (saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue())?has_content> 
91                                <#assign colorebordo = saxReaderUtil.createXPath("dynamic-element[@name='colorebordo']").getStringValue()> 
92                                </#if> 
93                                 
94                                <#assign xPathImmagine = saxReaderUtil.createXPath("dynamic-element[@name='immagine']")> 
95                                <#if xPathImmagine?? && xPathImmagine?has_content > 
96                                    <#assign imgNews = xPathImmagine.selectSingleNode(rootElement).getStringValue()> 
97                                    <#if imgNews?? && imgNews?has_content && (imgNews?length > 1)> 
98                                     
99                                    <#attempt> 
100                                        <#assign imgJson = jsonFactoryUtil.createJSONObject(imgNews)> 
101                                        <#assign url = "/documents/"+ imgJson.groupId +"/" +imgJson.classPK +"/"+ imgJson.title +"/"+imgJson.uuid + "?width=600" > 
102                                    <#recover>  
103                                    </#attempt> 
104                                    </#if> 
105                                </#if> 
106                                 
107                                <#assign xPathTextAltImg = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine']")> 
108                                <#assign textAltImg = xPathTextAltImg.selectSingleNode(rootElement).getStringValue()> 
109                                 
110                                <#assign xPathLinkAPagina = saxReaderUtil.createXPath("dynamic-element[@name='link_a_pagina']")> 
111                                <#assign linkToPage = "" > 
112                                 
113                                <#if xPathLinkAPagina?? > 
114                                    <#if xPathLinkAPagina?has_content > 
115                                        <#assign linkAPagina = xPathLinkAPagina.selectSingleNode(rootElement).getStringValue() > 
116                                        <#assign linkAPaginaSplitted = linkAPagina?split("@") > 
117                                        <#assign layoutIdPage = linkAPaginaSplitted?first > 
118                                        <#assign layoutIdPage = getterUtil.getLong(layoutIdPage) > 
119                                        <#assign groupIdPage = linkAPaginaSplitted?last > 
120                                        <#assign groupIdPage = getterUtil.getLong(groupIdPage) > 
121                                         
122                                        <#if layoutIdPage != 0 > 
123                                            <#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
124                                            <#assign contentPage = ""> 
125                                            <#attempt> 
126                                            <#assign contentPage = layoutLocalService.getLayout(groupIdPage, false, layoutIdPage ) > 
127                                            <#if contentPage?? > 
128                                                <#assign linkToPage = contentPage.getFriendlyURL(locale) > 
129                                                <#assign linkToPage = currentSiteUrl + currentSiteFriendlyUrl + linkToPage?trim> 
130                                            </#if> 
131                                            <#recover> 
132                                            </#attempt> 
133                                        </#if> 
134                                         
135                                    </#if> 
136                                </#if> 
137                                 
138                                <#if linkToPage?? && (linkToPage?length == 0 || linkToPage?length == 1) > 
139                                    <#assign xPathLinkEsterno = saxReaderUtil.createXPath("dynamic-element[@name='link_esterno']")> 
140                                    <#assign linkToPage = xPathLinkEsterno.selectSingleNode(rootElement).getStringValue() > 
141                                    <#assign linkToPage = linkToPage?trim> 
142                                </#if> 
143                             
144                                <#if linkToPage?? && (linkToPage?length == 0 || linkToPage?length == 1) > 
145                                    <#assign xPathLinkInterno = saxReaderUtil.createXPath("dynamic-element[@name='link_interno']")> 
146                                    <#assign linkToPage = xPathLinkInterno.selectSingleNode(rootElement).getStringValue() > 
147                                    <#assign linkToPage = linkToPage?trim> 
148                                </#if>  
149                                <#assign destinationPage = linkToPage> 
150                            <#else> 
151                                <#if structureId == attrattoreStructureKey> 
152                                <#assign subpage = "attrazione"> 
153                                <#elseif structureId == eventoStructureKey> 
154                                <#assign subpage = "evento"> 
155                                <#elseif structureId == itinerarioStructureKey> 
156                                <#assign subpage = "itinerario"> 
157                                <#elseif structureId == ricettaStructureKey> 
158                                <#assign subpage = "ricetta"> 
159                                <#elseif structureId == luogoStructureKey> 
160                                <#assign subpage = "luogo"> 
161                                <#else> 
162                                </#if> 
163                                <#--CONTENT BY DEFAULT LOCALE--> 
164                                <#attempt> 
165                                    <#assign contentByDefaultLocale = ja.getContentByLocale(localeUtil.getDefault()) /> 
166                                    <#assign documentByDefaultLocale = saxReaderUtil.read(contentByDefaultLocale) > 
167                                    <#assign rootElementByDefaultLocale = documentByDefaultLocale.getRootElement()> 
168                                        <#assign xPathImmagineListaByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 
169                                        <#if xPathImmagineListaByDefaultLocale?? && xPathImmagineListaByDefaultLocale?has_content> 
170                                            <#if xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?? && xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?has_content> 
171                                                <#assign immagineListaByDefaultLocale = xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()> 
172                                            </#if> 
173                                        </#if> 
174                                        <#assign xPathImmagineBannerByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='banner']")> 
175                                        <#if xPathImmagineBannerByDefaultLocale?? && xPathImmagineBannerByDefaultLocale?has_content> 
176	                                        <#assign immagineBannerByDefaultLocale = xPathImmagineBannerByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()>                            
177	                                        <#if immagineListaByDefaultLocale?trim?has_content> 
178	                                            <#assign immagineByDefaultLocale = immagineListaByDefaultLocale> 
179	                                        <#else> 
180	                                            <#assign immagineByDefaultLocale = immagineBannerByDefaultLocale> 
181	                                        </#if> 
182                                        </#if> 
183                                        <#if validator.isNotNull(immagineByDefaultLocale)> 
184                                            <#attempt> 
185                                                <#assign imgJsonByDefaultLocale = jsonFactoryUtil.createJSONObject(immagineByDefaultLocale)> 
186                                                <#assign url = "/documents/"+ imgJsonByDefaultLocale.groupId +"/" +imgJsonByDefaultLocale.classPK +"/"+ imgJsonByDefaultLocale.title +"/"+imgJsonByDefaultLocale.uuid + "?width=600" > 
187                                            <#recover> 
188                                                <#assign url = ""> 
189                                            </#attempt> 
190                                        </#if> 
191                                <#recover> 
192                                </#attempt> 
193                                <#--CONTENT BY DEFAULT LOCALE--> 
194 
195                                <#assign urlTitle = ja.getUrlTitle() /> 
196                                <#assign document = saxReaderUtil.read(contentByLocale) > 
197                                <#assign rootElement = document.getRootElement()> 
198                                <#assign xPathTitolo = "" /> 
199                                <#assign xPathSottotitolo_abstract = "" /> 
200                                <#assign xPathImmagineBanner = "" /> 
201                                <#assign xPathTextAltImg = "" /> 
202                                <#assign immagineLista = ""> 
203                                <#assign textAltImgLista = ""> 
204                                <#assign immagine = "">   
205                                <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
206                                <#assign xPathSottotitolo_abstract = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
207                                 
208                                <#assign xPathImmagineLista = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 
209                                <#if xPathImmagineLista?? && xPathImmagineLista?has_content> 
210                                    <#if xPathImmagineLista.selectSingleNode(rootElement)?? && xPathImmagineLista.selectSingleNode(rootElement)?has_content> 
211                                        <#assign immagineLista = xPathImmagineLista.selectSingleNode(rootElement).getStringValue()> 
212                                    </#if> 
213                                </#if> 
214                                <#assign xPathTextAltImgLista = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_lista']")> 
215                                <#if xPathTextAltImgLista?? && xPathTextAltImgLista?has_content> 
216                                    <#if xPathTextAltImgLista.selectSingleNode(rootElement)?? && xPathTextAltImgLista.selectSingleNode(rootElement)?has_content> 
217                                        <#assign textAltImgLista = xPathTextAltImgLista.selectSingleNode(rootElement).getStringValue()> 
218                                    </#if> 
219                                </#if> 
220 
221                                <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='banner']")> 
222                                <#assign xPathTextAltImg = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_banner']")> 
223                                <#assign textAltImg = xPathTextAltImg.selectSingleNode(rootElement).getStringValue()> 
224                                <#assign destinationPage = "${detailBaseUrl}/search/-/search/${subpage}/${urlTitle}" /> 
225                                <#assign titolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
226                                <#assign sottotitolo_abstract = xPathSottotitolo_abstract.selectSingleNode(rootElement).getStringValue()>    
227                                 
228                                <#assign immagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
229                                <#if !textAltImg?has_content> 
230                                    <#assign textAltImg = titolo> 
231                                </#if> 
232                                                                 
233                                <#if immagineLista?trim?has_content> 
234                                    <#assign immagine = immagineLista> 
235                                    <#assign textAltImg = textAltImgLista> 
236                                <#else> 
237                                    <#assign immagine = immagineBanner> 
238                                </#if> 
239 
240                                <#if validator.isNotNull(immagine)> 
241                                    <#attempt> 
242                                        <#assign imgJson = jsonFactoryUtil.createJSONObject(immagine)> 
243                                        <#assign url = "/documents/"+ imgJson.groupId +"/" +imgJson.classPK +"/"+ imgJson.title +"/"+imgJson.uuid + "?width=600" > 
244                                    <#recover> 
245                                    </#attempt> 
246                                </#if> 
247                            </#if> 
248                            <div class="card-container col-12 palermo-carousel-item ${colorebordo}"> 
249                                <div class="row"> 
250                                    <div class="card"> 
251                                        <a href="${destinationPage}"> 
252                                            <img class="card-img-top" src="${url}" alt="${textAltImg}"> 
253                                            <div class="card-body"> 
254                                                <h3 class="card-title">${titolo} 
255                                                </h3> 
256                                                <p class="card-text"> 
257                                                    ${sottotitolo_abstract} 
258                                                </p> 
259                                            </div> 
260                                        </a> 
261                                    </div> 
262                                </div> 
263                            </div> 
264                        </#list> 
265                    </div> 
266                </div> 
267                </div> 
268            </div> 
269            </div> 
270        </div> 
271        </div> 
272    </div> 
273    <#else> 
274        <div style="border: 1px solid red; padding:20px;"> 
275            <h3 style="color: red;">Questo template supporta solo contenuti di tipo Web Content con struttura attrattori, eventi, itinerari, ricette, luoghi e proposte di viaggio.</h3> 
276            <h3 style="color: red;">Configurare opportunamente l'aggregatore risorse</h3> 
277        </div> 
278    </#if> 
279    
280</#if> 

Asset Publisher

Asset Publisher

SEZIONE: La Santuzza e il dialogo interreligioso

Santuzza is not only the patroness of Palermo. Among the many ethnic groups that have adopted Rosalia, the Tamils are certainly the most devout: the community is truly large, the most numerous among those present in Italy (with about 8 thousand people, Palermo has the third largest number of resident Tamils in the world). Most of the families come from Sri Lanka and took refuge in Palermo to escape the bloody civil war that broke out in their homeland. 

Learn more