Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> avtContext  [in template "20099#20135#75650" at line 19, column 6]

----
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: #if avtContext.provinceId??  [in template "20099#20135#75650" at line 19, column 1]
----
1<#assign slugs={ 
2	 "province" : (avtContext.provinceSlug)!'', 
3	 "township" : (avtContext.townshipSlug)!'', 
4	 "type" : (avtContext.typeSlug)!'', 
5	 "subtype" : (avtContext.subtypeSlug)!'', 
6	 "segment" : (avtContext.segmentSlug)!'', 
7	 "subsegment" : (avtContext.subsegmentSlug)!'', 
8	 "resource" : (avtContext.resourceSlug)!'' 
9} />  
10<#assign urls= {  
11	"province" : '',  
12	"township" : '',  
13	"type" : '',  
14	"subtype" : '',  
15	"segment" : '',  
16	"subsegment" : '',  
17	"resource" : ''  
18} /> 
19<#if avtContext.provinceId??>  
20<#assign urls = urls + {'province': '/' + slugs['province']} />  
21</#if>  
22<#if avtContext.townshipId??>  
23<#assign urls = urls + {'township': urls['province'] + '/' + slugs['township']} />  
24</#if>  
25<#if avtContext.typeCode??>  
26<#assign urls = urls + {'type': '/' + slugs['type']} />  
27</#if>  
28<#if avtContext.subtypeCode??>  
29<#assign urls = urls + {'subtype': urls['type'] + '/' + slugs['subtype']} />  
30</#if>  
31<#if avtContext.segmentCode??>  
32<#assign urls = urls + {'segment': '/' + slugs['segment']} />  
33</#if>  
34<#if avtContext.subsegmentCode??>  
35<#assign urls = urls + {'subsegment': urls['segment'] + '/' + slugs['subsegment']} />  
36</#if>  
37<#if avtContext.resourceId??>  
38	<#if avtContext.subtypeCode??> 
39		<#assign urls = urls + {'resource': urls['township'] + urls['subtype'] + '/' + slugs['resource']} /> 
40	<#else> 
41		<#assign urls = urls + {'resource': urls['township'] + urls['type'] + '/' + slugs['resource']} /> 
42	</#if> 
43	   
44</#if>  
45<#assign names = {  
46	"province" : getterUtil.getString(avtContext.provinceName),  
47	"township" : getterUtil.getString(avtContext.townshipName),  
48	"type" : getterUtil.getString(avtContext.typeName),  
49	"subtype" : getterUtil.getString(avtContext.subtypeName),  
50	"segment" : getterUtil.getString(avtContext.segmentName),  
51	"subsegment" : getterUtil.getString(avtContext.subsegmentName),  
52	"resource" : getterUtil.getString(avtContext.resourceName)  
53} />  
54<#assign sorted_keys = ['province', 'township', 'type', 'subtype', 'segment', 'subsegment', 'resource'] />  
55<#assign portletid = "#portlet_"+themeDisplay.getPortletDisplay().getId() />  
56<#assign urlActual = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
57<#assign firstElement=true > 
58<#assign _lang = themeDisplay.getLocale().getLanguage()/> 
59<#if _lang == "ca"> 
60	<#assign _lang = "va"/> 
61</#if> 
62<#assign home_links = { 
63	"es": "/es/inicio", 
64	"en": "/en/home", 
65	"fr": "/fr/accueil", 
66	"de": "/de/startseite", 
67	"va": "/va/inici" 
68} /> 
69<#assign home_link = home_links[_lang]!"/es/inicio" /> 
70<style>  
71${portletid} .custom-breadcrumb{ 
72	/*pointer-events:none;*/ 
73}  
74${portletid} {  
75	background-color: #e9ebee;  
76	margin-top: 1rem;  
77	margin-bottom: 0; 
78    padding: 0.75rem 1rem; 
79}  
80${portletid} .custom-breadcrumb .breadcrum-link {  
81	color: rgba(0,0,0,0.7) !important;  
82	font-size: 1rem !important;  
83	font-weight: 400;  
84}  
85${portletid} .custom-breadcrumb li:last-child a {  
86	font-weight: 700 !important;  
87
88 
89${portletid} .breadcrumb-item .cv-move-to-next{ 
90    display: block; 
91    left: -0.1rem; 
92    margin-top: -0.375em; 
93    padding: 0; 
94    position: absolute; 
95    top: 50%; 
96    font-family: cv-icons; 
97    color: #0078BF; 
98    font-size: 0.75rem !important; 
99    background-image: none !important; 
100
101${portletid} .breadcrumb-item + .breadcrumb-item::before {  
102	float: left;  
103	/* content: '\e94d'; */  
104	display: block;  
105	left: -0.1rem;  
106	margin-top: -0.375em;  
107	padding: 0;  
108	position: absolute;  
109	top: 50%;  
110	font-family: cv-icons;  
111	color: #0078BF;  
112	font-size: 0.75rem !important;  
113	background-image: none !important;  
114}  
115@media (max-width: 991px) { 
116	${portletid} { 
117		display: none; 
118	}	 
119
120 
121@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { 
122    ${portletid} { 
123        padding: 0rem !important; 
124
125
126</style> 
127<nav class="container-fluid custom-breadcrumb" aria-label="breadcrumb">  
128	<ol class="breadcrumb f-source-sans-pro wrapped-content">  
129		<#if entries?has_content>  
130			<#list entries as navigationEntry>  
131				<#if navigationEntry.getURL() == currentURL>  
132					<li class="breadcrumb-item-active" aria-current="page">  
133				<#else>  
134					<li class="breadcrumb-item">  
135						<!-- <a href="${navigationEntry.getURL()}" class="breadcrum-link"> -->  
136						<a href="${home_link}" class="breadcrum-link"> 
137				</#if>  
138				<@liferay.language key="page.home"/> 
139				<#if navigationEntry.getURL() != currentURL>  
140						</a> 
141						<#if !firstElement >  
142							<i class="cv-move-to-next"></i> 
143						<#else> 
144							<#assign firstElement=false > 
145						</#if>  
146				</#if>  
147					</li>  
148			</#list>  
149		</#if>  
150		<#list sorted_keys as key>  
151			<#assign url = urls[key] />  
152			<#assign name = getterUtil.getString(names[key]) />  
153			<#if url?length gt 0>  
154				<#if currentURL?ends_with(url)>  
155					<li class="breadcrumb-item-active" aria-current="page">  
156				<#else> 
157					<li class="breadcrumb-item">  
158						<a href="/${_lang}${url}" class="breadcrum-link">  
159				</#if>  
160				<#if name??>  
161					${name}  
162				<#else>  
163					${getterUtil.getString(slugs[key])}  
164				</#if> 
165				<#if !currentURL?ends_with(url)> 
166						</a> 
167						<#if !firstElement >  
168							<i class="cv-move-to-next"></i> 
169						<#else> 
170							<#assign firstElement=false > 
171						</#if>  
172				</#if> 
173					</li> 
174			</#if> 
175		</#list> 
176	</ol> 
177</nav> 
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> serviceLocator.findService("es.cv.urlfilter.service.PathKeyLocalService")  [in template "20099#20135#413073" at line 23, column 20]

----
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 pathKey = serviceLocator.find...  [in template "20099#20135#413073" at line 23, column 1]
----
1<#assign DDMStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")> 
2 
3<#assign ClassNameLocalService = serviceLocator.findService( 
4    "com.liferay.portal.kernel.service.ClassNameLocalService")> 
5 
6<#assign classNameId = ClassNameLocalService.getClassNameId( 
7    "com.liferay.journal.model.JournalArticle")> 
8 
9<#assign structures = DDMStructureLocalService.getStructures( 
10    themeDisplay.getScopeGroupId(), 
11    classNameId)> 
12 
13<#assign publicationStructureKey = ""> 
14<#list structures as structure> 
15    <#assign title = structure.getName(locale)> 
16    <#if title == "Publicación"> 
17        <#assign publicationStructureKey = structure.getStructureKey()> 
18    </#if> 
19</#list> 
20 
21<#if selectionStyle == "dynamic" > 
22<#assign aeq = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery")/> 
23<#assign pathKey = serviceLocator.findService("es.cv.urlfilter.service.PathKeyLocalService")> 
24<#assign pathValue = serviceLocator.findService("es.cv.urlfilter.service.PathValueLocalService")> 
25<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
26<#assign AssetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")> 
27<#assign pfu = serviceLocator.findService("com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil")> 
28<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")> 
29 
30 
31<#assign language = locale.getLanguage()!"es" /> 
32	<#assign custom_language = "Es" 
33		language_url = "/"+language> 
34	 
35	<#if language == "es"> 
36		<#assign custom_language = "Es"> 
37	<#elseif language == "en"> 
38		<#assign custom_language = "En"> 
39	<#elseif language == "fr"> 
40		<#assign custom_language = "Fr"> 
41	<#elseif language == "de"> 
42		<#assign custom_language = "De"> 
43	<#elseif language == "ca"> 
44		<#assign custom_language = "Va" 
45				 language_url="/va" >	 
46	</#if> 
47 
48 
49 
50<#assign slugs = {  
51    "province": (avtContext.provinceSlug)!'', 
52    "township": (avtContext.townshipSlug)!'', 
53    "type": (avtContext.typeSlug)!'', 
54    "subtype": (avtContext.subtypeSlug)!'', 
55    "segment": (avtContext.segmentSlug)!'', 
56    "subsegment": (avtContext.subsegmentSlug)!'', 
57    "resource": (avtContext.resourceSlug)!'' 
58 } /> 
59 
60<#assign dinamicPage = "false"> 
61<#assign typePathKey = ""> 
62<#assign idPathKey = 0> 
63<#assign slug = ""> 
64 
65<#assign queryValues0 = [] > 
66<#if portletPreferences["queryValues0"]??> 
67    <#assign queryValues0 = portletPreferences["queryValues0"] > 
68</#if> 
69 
70 
71<#if portletPreferences["orderByColumn1"]??> 
72    <#assign orders1 = portletPreferences["orderByColumn1"] > 
73</#if> 
74 
75<#if portletPreferences["orderByColumn2"]??> 
76    <#assign orders2 = portletPreferences["orderByColumn2"] > 
77</#if> 
78 
79<#assign queryValues1 = [] > 
80<#if portletPreferences["queryValues1"]??> 
81    <#assign queryValues1 = portletPreferences["queryValues1"] > 
82</#if> 
83 
84<#assign deltas = [] > 
85<#if portletPreferences["delta"]??> 
86    <#assign deltas = portletPreferences["delta"] > 
87</#if> 
88 
89<#assign queryAndOperator0 = [] > 
90<#if portletPreferences["queryAndOperator0"]??> 
91    <#assign queryAndOperator0 = portletPreferences["queryAndOperator0"] > 
92</#if> 
93 
94<#assign queryAndOperator1 = [] > 
95<#if portletPreferences["queryAndOperator1"]??> 
96    <#assign queryAndOperator1 = portletPreferences["queryAndOperator1"] > 
97</#if> 
98 
99<#assign queryNames0 = [] > 
100<#if portletPreferences["queryName0"]??> 
101    <#assign queryNames0 = portletPreferences["queryName0"] > 
102</#if> 
103 
104<#assign queryNames1 = [] > 
105<#if portletPreferences["queryName1"]??> 
106    <#assign queryNames1 = portletPreferences["queryName1"] > 
107</#if> 
108 
109 
110<#assign categoriesArrayAND = [] /> 
111<#assign categoriesArrayOR = [] /> 
112 
113<#assign tagsArrayAND = [] /> 
114<#assign tagsArrayOR = [] /> 
115 
116 
117<#--Numero de elementos a mostrar--> 
118<#assign size = 20?number > 
119<#list deltas as delta> 
120    <#assign size = delta?number > 
121</#list> 
122 
123<#--Nombre de la primera query--> 
124<#list queryNames0 as queryName0> 
125    <#assign firstQuery = queryName0 > 
126</#list> 
127<#--Nombre de la segunda query--> 
128<#list queryNames1 as queryName1> 
129    <#assign secondQuery = queryName1 > 
130</#list> 
131 
132<#--Operador de la primera query--> 
133<#list queryAndOperator0 as order0Aux> 
134    <#assign orderAnd0 = order0Aux > 
135</#list> 
136 
137<#--Operador de la primera query--> 
138<#list queryAndOperator1 as order1Aux> 
139    <#assign orderAnd1 = order1Aux > 
140</#list> 
141 
142 
143<#if firstQuery??> 
144    <#if firstQuery == "assetCategories"> 
145        <#list queryValues0 as queryValue0> 
146            <#assign num = queryValue0?number> 
147            <#if orderAnd0 == "true"> 
148                <#assign categoriesArrayAND = categoriesArrayAND + [ num ] /> 
149            </#if> 
150            <#if orderAnd0 == "false"> 
151                <#assign categoriesArrayOR = categoriesArrayOR + [ num ] /> 
152            </#if> 
153        </#list> 
154    <#elseif firstQuery == "assetTags"> 
155        <#list queryValues0 as queryValue0> 
156            <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue0 + "%"))> 
157            <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
158            <#list tags as tag> 
159                 <#if orderAnd0 == "true"> 
160                    <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] /> 
161                </#if> 
162                <#if orderAnd0 == "false"> 
163                    <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] /> 
164                </#if> 
165            </#list> 
166        </#list> 
167    </#if> 
168</#if> 
169 
170 
171<#if secondQuery??> 
172    <#if secondQuery == "assetCategories"> 
173        <#list queryValues1 as queryValue1> 
174            <#assign num = queryValue1?number> 
175            <#if orderAnd1 == "true"> 
176                <#assign categoriesArrayAND = categoriesArrayAND + [ num ] /> 
177            </#if> 
178            <#if orderAnd1 == "false"> 
179                <#assign categoriesArrayOR = categoriesArrayOR + [ num ] /> 
180            </#if> 
181        </#list> 
182    <#elseif secondQuery == "assetTags">   
183        <#list queryValues1 as queryValue1> 
184            <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue1 + "%"))> 
185            <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
186            <#list tags as tag> 
187                 <#if orderAnd1 == "true"> 
188                    <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] /> 
189                </#if> 
190                <#if orderAnd1 == "false"> 
191                    <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] /> 
192                </#if> 
193            </#list> 
194        </#list> 
195    </#if> 
196</#if> 
197 
198 
199 
200 
201<#if slugs["township"]?has_content && slugs["province"]?has_content> 
202    <#assign typePathKey = pathKey.findByType("township")> 
203    <#assign slug = slugs["township"]> 
204    <#assign idPathKey = typePathKey.getKeyId()> 
205    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
206 
207 
208    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
209    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
210    <#list categories as category> 
211        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
212    </#list> 
213<#elseif slugs["province"]?has_content> 
214       <#assign typePathKey = pathKey.findByType("province")> 
215    <#assign slug = slugs["province"]> 
216 
217    <#assign idPathKey = typePathKey.getKeyId()> 
218    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
219	<#assign nameCategory = nameCategory + " (Provincia)"> 
220 
221    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
222    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
223    <#list categories as category> 
224        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
225    </#list> 
226 
227</#if> 
228 
229 
230<#if slugs["type"]?has_content> 
231    <#assign typePathKey = pathKey.findByType("type")> 
232    <#assign slug = slugs["type"]> 
233 
234    <#assign idPathKey = typePathKey.getKeyId()> 
235    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
236 
237 
238    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
239    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
240    <#list categories as category> 
241        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
242    </#list> 
243 
244</#if> 
245 
246<#if slugs["subtype"]?has_content> 
247    <#assign typePathKey = pathKey.findByType("subtype")> 
248    <#assign slug = slugs["subtype"]> 
249 
250    <#assign idPathKey = typePathKey.getKeyId()> 
251    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
252 
253 
254    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
255    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
256    <#list categories as category> 
257        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
258    </#list> 
259 
260</#if> 
261 
262<#if slugs["segment"]?has_content> 
263    <#assign typePathKey = pathKey.findByType("segment")> 
264    <#assign slug = slugs["segment"]> 
265 
266    <#assign idPathKey = typePathKey.getKeyId()> 
267    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
268 
269 
270    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
271    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
272    <#list categories as category> 
273        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
274    </#list> 
275 
276</#if> 
277 
278 
279<#if slugs["subsegment"]?has_content> 
280    <#assign typePathKey = pathKey.findByType("subsegment")> 
281    <#assign slug = slugs["subsegment"]> 
282 
283    <#assign idPathKey = typePathKey.getKeyId()> 
284    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
285 
286 
287    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
288    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
289    <#list categories as category> 
290        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
291    </#list> 
292 
293</#if> 
294 
295 
296<#assign prueba =  aeq.setAllCategoryIds(categoriesArrayAND) > 
297<#assign prueba =  aeq.setAnyCategoryIds(categoriesArrayOR) > 
298 
299<#assign prueba =  aeq.setAllTagIds(tagsArrayAND) > 
300<#assign prueba =  aeq.setAnyTagIds(tagsArrayOR) > 
301 
302<#assign prueba =  aeq.setStart(0) > 
303<#assign prueba =  aeq.setEnd(1000) > 
304 
305<#if orders1??> 
306    <#assign prueba =  aeq.setOrderByCol1(orders1[0]) > 
307</#if> 
308 
309<#if orders2??> 
310    <#assign prueba =  aeq.setOrderByCol2(orders2[0]) > 
311</#if> 
312 
313 
314<#assign assetEntryList = AssetEntryLocalService.getEntries(aeq)> 
315<#else> 
316    <#assign assetEntryList = entries> 
317    <#assign size = entries?size> 
318    <#assign language = locale.getLanguage()!"es" /> 
319	<#assign language_url = "/"+language> 
320	<#if language == "ca"> 
321		<#assign language_url="/va" >	 
322	</#if> 
323</#if>   
324 
325<#assign filteredAssetEntryList = []>			 
326<#list assetEntryList as entry> 
327	<#if entry.getAssetRenderer()??> 
328	    <#assign renderer = entry.getAssetRenderer()> 
329	    <#if renderer.getClassName() == "com.liferay.journal.model.JournalArticle"> 
330	        <#assign article = renderer.getArticle()>		         
331	        <#assign currentLanguageId = locale.toString()> 
332	        <#if article.getDDMStructureKey() == publicationStructureKey && article.getAvailableLanguageIds()?seq_contains(currentLanguageId)> 
333	            <#assign document = saxReaderUtil.read(article.getContentByLocale(locale))> 
334                <#assign rootElement = document.getRootElement()>          
335	            <#assign titulo = ""> 
336                <#list rootElement.elements() as dynamicElement> 
337                    <#if dynamicElement.attributeValue("name") == "titulo"> 
338                        <#assign titulo = dynamicElement.element("dynamic-content").getText()?trim> 
339                    </#if> 
340                </#list> 
341                <#if titulo?has_content> 
342                    <#assign filteredAssetEntryList = filteredAssetEntryList + [entry]> 
343                </#if> 
344	        </#if> 
345	    </#if> 
346    </#if> 
347</#list> 
348<#assign assetEntryList = filteredAssetEntryList> 
349<#if assetEntryList?size gt size> 
350    <#assign assetEntryList = assetEntryList[0..(size-1)]> 
351</#if> 
352 
353<#assign pdfCarrusel = "pdf-carrusel-" + randomNamespace>  
354<#if assetEntryList?has_content>  
355	<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>  
356	<section id="${pdfCarrusel}" class="pt-5 pb-5">  
357		<h2 class="text-center title-big"> <@liferay.language key="published.last-publication"/> </h2>  
358		<div class="pdf-carrusel carousel slick-carousel wrapped-content">			 
359			<#list assetEntryList as entry>  
360				<#if entry.getAssetRenderer()??> 
361					<#assign renderer = entry.getAssetRenderer()>  
362					<#assign className = renderer.getClassName() > 
363					<#if className == "com.liferay.journal.model.JournalArticle" >  
364						<#assign journalArticle = renderer.getArticle() >						 
365						<#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) >  
366						<#assign rootElement = document.getRootElement() >  
367						 
368						<#if language == 'ca'> 
369			    			<#assign language = 'va'> 
370			    		</#if> 
371			    		<#assign articFolderAttributes = journalArticle.getFolder().getExpandoBridge().getAttributes() > 
372						<#assign slugFolderTitle = "slug_" + language> 
373						<#assign folderPath = articFolderAttributes[slugFolderTitle] > 
374						<#assign urlFriendly=language_url + folderPath + journalArticle.getUrlTitle(themeDisplay.getLocale())> 
375						 
376						<#assign publicacionPDF =[] 
377								 publicacionText=[] 
378								 fotodeportada="" >  
379						 
380						<#list rootElement.elements() as dynamicElement >  
381							<#if "fotodeportada" == dynamicElement.attributeValue("name") >  
382								<#assign fotodeportada = dynamicElement.element("dynamic-content").getText() >  
383								<#assign fotodeportadaChild = dynamicElement.selectSingleNode("/root/dynamic-element[@name='fotodeportada']/dynamic-element")> 
384								<#assign descripcionimagenportada = fotodeportadaChild.element("dynamic-content").getText() > 
385                			</#if> 
386							<#if "publicacion" == dynamicElement.attributeValue("name") > 
387								<#assign publicacion = dynamicElement.element("dynamic-content").getText() >  
388								<#assign publicacionElements = dynamicElement.element("dynamic-content").elements() > 
389								<#list dynamicElement.element("dynamic-element").elements() as dpubli > 
390									<#if dpubli.getText()?trim?length gt 0 >	 
391										<#assign  publicacionText = publicacionText + [dpubli.getText()] >									 
392									</#if> 
393								</#list> 
394 								<#list dynamicElement.elements() as algo > 									 
395									<#if algo.getText()?trim?length gt 0 >										 
396										<#assign  publicacionPDF = publicacionPDF + [algo.getText()] > 
397									</#if>  
398								</#list>													 								 
399							</#if> 
400							<#if "titulo" == dynamicElement.attributeValue("name") >  
401		                        <#assign titulo = dynamicElement.element("dynamic-content").getText() > 
402		                    </#if> 
403						</#list>  
404						<#if titulo?? && titulo!=''> 
405							<div class="slick-item h-100">  
406								<div class="row">  
407									<div class="col-4 mt-0 mb-auto">  
408										<img loading="lazy" class="image-pdf w-100 image-result" aria-hidden="true" alt="" 
409											<#if fotodeportada?length gt 0 > src="${fotodeportada}"  
410											<#else> src="/o/main-theme/images/publicaciones.svg"  
411											</#if>  
412											/>  
413									</div>  
414									<div class="col-8"> 
415										<p class="tag-title">  
416											<a href="${urlFriendly}">${titulo}</a>  
417										</p>  
418										<div class="tag-download"> 
419											<@liferay.language key="download" />: 
420										</div>	 
421										<#assign textpubli = "" > 
422										<#list publicacionPDF as pdf > 
423											<#if pdf?index lt publicacionText?size >										 
424											<#if pdf?length gt 0 > 
425												<#if textpubli?contains(publicacionText[pdf?index]) == false > 
426													<#assign textpubli = textpubli +" "+publicacionText[pdf?index] > 
427													<#assign linkDescription = "" > 
428													<#switch publicacionText[pdf?index]> 
429															<#case 'ES'> 
430																<#assign linkDescription><@liferay.language key="download.publication.pdf.spanish"/></#assign> 
431															<#break> 
432															<#case 'VA'> 
433																<#assign linkDescription><@liferay.language key="download.publication.pdf.valencian"/></#assign> 
434															<#break> 
435															<#case 'EN'> 
436																<#assign linkDescription><@liferay.language key="download.publication.pdf.english"/></#assign> 
437															<#break> 
438															<#case 'FR'> 
439																<#assign linkDescription><@liferay.language key="download.publication.pdf.french"/></#assign> 
440															<#break> 
441															<#case 'DE'> 
442																<#assign linkDescription><@liferay.language key="download.publication.pdf.german"/></#assign> 
443															<#break> 
444															<#case 'IT'> 
445																<#assign linkDescription><@liferay.language key="download.publication.pdf.italian"/></#assign> 
446															<#break> 
447															<#case 'NE'> 
448																<#assign linkDescription><@liferay.language key="download.publication.pdf.dutch"/></#assign> 
449															<#break> 
450															<#case 'POR'> 
451																<#assign linkDescription><@liferay.language key="download.publication.pdf.portuguese"/></#assign> 
452															<#break> 
453															<#case 'POL'> 
454																<#assign linkDescription><@liferay.language key="download.publication.pdf.polish"/></#assign> 
455															<#break> 
456															<#case 'ZH'> 
457																<#assign linkDescription><@liferay.language key="download.publication.pdf.chinese"/></#assign> 
458															<#break> 
459															<#case 'RU'> 
460																<#assign linkDescription><@liferay.language key="download.publication.pdf.russian"/></#assign> 
461															<#break> 
462															<#case 'JA'> 
463																<#assign linkDescription><@liferay.language key="download.publication.pdf.japanese"/></#assign> 
464															<#break> 
465														</#switch> 
466													<a class="link-pdf text-uppercase" href="${pdf}" target="_blank" download="${journalArticle.getTitle()}" aria-label="${linkDescription}">${publicacionText[pdf?index]}</a>										  
467												</#if> 
468											</#if> 
469											</#if> 
470										</#list>								   
471									</div>  
472								</div> 
473							</div> 
474						</#if> 
475					</#if>  
476				</#if> 
477			</#list>  
478		</div>  
479	</section>  
480	 
481	 
482	<style>  
483	#${pdfCarrusel} { padding: 5rem 0; }  
484	#${pdfCarrusel} .image-pdf { min-height: 5rem; height: auto; max-height: 10rem; object-fit: cover; margin: 0 auto; }  
485	#${pdfCarrusel} .slick-item { padding: 1rem; }  
486	#${pdfCarrusel} .slick-item[aria-hidden=true] { visibility: hidden; height: 0; }  
487	#${pdfCarrusel} .tag-title a{ font-size: 1.4rem; text-transform: uppercase; transform: scaleX(0.9); transform-origin: left; color:#CB4F40; }  
488	#${pdfCarrusel} .tag-download{ font-size: 1rem; }  
489	#${pdfCarrusel} .link-pdf { font-size: 1rem; color: #0078BF; }  
490	</style>  
491	 
492	 
493	 
494	<link rel="stylesheet" type="text/css" href="slick/slick.css"/>  
495	<link rel="stylesheet" type="text/css" href="slick/slick-theme.css"/>  
496	<script> 
497	        $(window).ready(function() { 
498	              if(typeof $.fn.slick === 'function'){ 
499	                var total = "${assetEntryList?size}"; 
500	                  $("#${pdfCarrusel} .pdf-carrusel:not(.slick-initialized)").slick({ 
501	                      dots: total>4, 
502	                      arrows: false, 
503	                      infinite: true, 
504	                      slidesToShow: 4, 
505	                      slidesToScroll: 4, 
506	                        responsive: [ 
507
508						      breakpoint: 1024, 
509						      settings: { 
510						        slidesToShow: 3, 
511						        slidesToScroll: 3, 
512						        infinite: true, 
513						        dots: true 
514
515						    }, 
516
517						      breakpoint: 600, 
518						      settings: { 
519						        slidesToShow: 2, 
520						        slidesToScroll: 2 
521
522						    }, 
523
524						      breakpoint: 480, 
525						      settings: { 
526						        slidesToShow: 1, 
527						        slidesToScroll: 1 
528
529
530						    // You can unslick at a given breakpoint now by adding: 
531						    // settings: "unslick" 
532						    // instead of a settings object 
533
534	                   }); 
535
536	        }); 
537	  </script>  
538   
539<#else>		 	 
540	<#assign usrRoles = user.getRoles()> 
541	<style> 
542		 #${pdfCarrusel} .empty-message { 
543			color: #c28a03; 
544			font-size: 1.4rem; 
545			font-weight: 600; 
546			line-height: 1.2; 
547			margin-top: 1rem; 
548
549	</style> 
550	<#list usrRoles as usrRole> 
551	    <#if usrRole.getName() == "Administrator"> 
552			<section id="${pdfCarrusel}" class="pt-5 pb-5"> 
553				 <div class="text-uppercase text-center empty-message f-source-sans-pro"> 
554		 		 	<@liferay.language key="highlighted.search.results.empty"/> 
555				 </div> 
556		    </section>		         
557	    </#if>  
558	</#list>  
559</#if> 
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> serviceLocator.findService("es.cv.urlfilter.service.PathKeyLocalService")  [in template "20099#20135#102529" at line 2, column 20]

----
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 pathKey = serviceLocator.find...  [in template "20099#20135#102529" at line 2, column 1]
----
1<#assign aeq = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery")/> 
2<#assign pathKey = serviceLocator.findService("es.cv.urlfilter.service.PathKeyLocalService")> 
3<#assign pathValue = serviceLocator.findService("es.cv.urlfilter.service.PathValueLocalService")> 
4<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")> 
6<#assign AssetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")> 
7<#assign pfu = serviceLocator.findService("com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil")> 
8<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")> 
9 
10 
11<#assign language = locale.getLanguage()!"es" /> 
12	<#assign custom_language = "Es" 
13		language_url = "/"+language> 
14	 
15	<#if language == "es"> 
16		<#assign custom_language = "Es"> 
17	<#elseif language == "en"> 
18		<#assign custom_language = "En"> 
19	<#elseif language == "fr"> 
20		<#assign custom_language = "Fr"> 
21	<#elseif language == "de"> 
22		<#assign custom_language = "De"> 
23	<#elseif language == "ca"> 
24		<#assign custom_language = "Va" 
25				 language_url="/va" >	 
26	</#if> 
27 
28 
29 
30<#assign slugs = {  
31    "province": (avtContext.provinceSlug)!'', 
32    "township": (avtContext.townshipSlug)!'', 
33    "type": (avtContext.typeSlug)!'', 
34    "subtype": (avtContext.subtypeSlug)!'', 
35    "segment": (avtContext.segmentSlug)!'', 
36    "subsegment": (avtContext.subsegmentSlug)!'', 
37    "resource": (avtContext.resourceSlug)!'' 
38 } /> 
39 
40<#assign dinamicPage = "false"> 
41<#assign typePathKey = ""> 
42<#assign idPathKey = 0> 
43<#assign slug = ""> 
44 
45<#assign queryValues0 = [] > 
46<#if portletPreferences["queryValues0"]??> 
47    <#assign queryValues0 = portletPreferences["queryValues0"] > 
48</#if> 
49 
50 
51<#if portletPreferences["orderByColumn1"]??> 
52    <#assign orders1 = portletPreferences["orderByColumn1"] > 
53</#if> 
54 
55<#if portletPreferences["orderByColumn2"]??> 
56    <#assign orders2 = portletPreferences["orderByColumn2"] > 
57</#if> 
58 
59<#assign queryValues1 = [] > 
60<#if portletPreferences["queryValues1"]??> 
61    <#assign queryValues1 = portletPreferences["queryValues1"] > 
62</#if> 
63 
64<#assign deltas = [] > 
65<#if portletPreferences["delta"]??> 
66    <#assign deltas = portletPreferences["delta"] > 
67</#if> 
68 
69<#assign queryAndOperator0 = [] > 
70<#if portletPreferences["queryAndOperator0"]??> 
71    <#assign queryAndOperator0 = portletPreferences["queryAndOperator0"] > 
72</#if> 
73 
74<#assign queryAndOperator1 = [] > 
75<#if portletPreferences["queryAndOperator1"]??> 
76    <#assign queryAndOperator1 = portletPreferences["queryAndOperator1"] > 
77</#if> 
78 
79<#assign queryNames0 = [] > 
80<#if portletPreferences["queryName0"]??> 
81    <#assign queryNames0 = portletPreferences["queryName0"] > 
82</#if> 
83 
84<#assign queryNames1 = [] > 
85<#if portletPreferences["queryName1"]??> 
86    <#assign queryNames1 = portletPreferences["queryName1"] > 
87</#if> 
88 
89 
90<#assign categoriesArrayAND = [] /> 
91<#assign categoriesArrayOR = [] /> 
92 
93<#assign tagsArrayAND = [] /> 
94<#assign tagsArrayOR = [] /> 
95 
96 
97<#--Numero de elementos a mostrar--> 
98<#assign size = 20?number > 
99<#list deltas as delta> 
100    <#assign size = delta?number > 
101</#list> 
102 
103<#--Nombre de la primera query--> 
104<#list queryNames0 as queryName0> 
105    <#assign firstQuery = queryName0 > 
106</#list> 
107<#--Nombre de la segunda query--> 
108<#list queryNames1 as queryName1> 
109    <#assign secondQuery = queryName1 > 
110</#list> 
111 
112<#--Operador de la primera query--> 
113<#list queryAndOperator0 as order0Aux> 
114    <#assign orderAnd0 = order0Aux > 
115</#list> 
116 
117<#--Operador de la primera query--> 
118<#list queryAndOperator1 as order1Aux> 
119    <#assign orderAnd1 = order1Aux > 
120</#list> 
121 
122 
123<#if firstQuery??> 
124    <#if firstQuery == "assetCategories"> 
125        <#list queryValues0 as queryValue0> 
126            <#assign num = queryValue0?number> 
127            <#if orderAnd0 == "true"> 
128                <#assign categoriesArrayAND = categoriesArrayAND + [ num ] /> 
129            </#if> 
130            <#if orderAnd0 == "false"> 
131                <#assign categoriesArrayOR = categoriesArrayOR + [ num ] /> 
132            </#if> 
133        </#list> 
134    <#elseif firstQuery == "assetTags"> 
135        <#list queryValues0 as queryValue0> 
136            <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue0 + "%"))> 
137            <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
138            <#list tags as tag> 
139                 <#if orderAnd0 == "true"> 
140                    <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] /> 
141                </#if> 
142                <#if orderAnd0 == "false"> 
143                    <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] /> 
144                </#if> 
145            </#list> 
146        </#list> 
147    </#if> 
148</#if> 
149 
150 
151<#if secondQuery??> 
152    <#if secondQuery == "assetCategories"> 
153        <#list queryValues1 as queryValue1> 
154            <#assign num = queryValue1?number> 
155            <#if orderAnd1 == "true"> 
156                <#assign categoriesArrayAND = categoriesArrayAND + [ num ] /> 
157            </#if> 
158            <#if orderAnd1 == "false"> 
159                <#assign categoriesArrayOR = categoriesArrayOR + [ num ] /> 
160            </#if> 
161        </#list> 
162    <#elseif secondQuery == "assetTags">   
163        <#list queryValues1 as queryValue1> 
164            <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue1 + "%"))> 
165            <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
166            <#list tags as tag> 
167                 <#if orderAnd1 == "true"> 
168                    <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] /> 
169                </#if> 
170                <#if orderAnd1 == "false"> 
171                    <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] /> 
172                </#if> 
173            </#list> 
174        </#list> 
175    </#if> 
176</#if> 
177 
178 
179 
180 
181<#if slugs["township"]?has_content && slugs["province"]?has_content> 
182    <#assign typePathKey = pathKey.findByType("township")> 
183    <#assign slug = slugs["township"]> 
184    <#assign idPathKey = typePathKey.getKeyId()> 
185    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
186 
187    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like(nameCategory))> 
188    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
189     
190    <#list categories as category> 
191        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
192    </#list> 
193<#elseif slugs["province"]?has_content> 
194    <#assign typePathKey = pathKey.findByType("province")> 
195    <#assign slug = slugs["province"]> 
196 
197    <#assign idPathKey = typePathKey.getKeyId()> 
198    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
199	<#assign nameCategory = nameCategory + " (Provincia)"> 
200 
201    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like(nameCategory))> 
202    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
203     
204    <#list categories as category> 
205        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
206    </#list> 
207 
208</#if> 
209 
210 
211<#if slugs["type"]?has_content> 
212    <#assign typePathKey = pathKey.findByType("type")> 
213    <#assign slug = slugs["type"]> 
214 
215    <#assign idPathKey = typePathKey.getKeyId()> 
216    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
217 
218 
219    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
220    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
221    <#list categories as category> 
222        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
223    </#list> 
224 
225</#if> 
226 
227<#if slugs["subtype"]?has_content> 
228    <#assign typePathKey = pathKey.findByType("subtype")> 
229    <#assign slug = slugs["subtype"]> 
230 
231    <#assign idPathKey = typePathKey.getKeyId()> 
232    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
233 
234 
235    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
236    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
237    <#list categories as category> 
238        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
239    </#list> 
240 
241</#if> 
242 
243<#if slugs["segment"]?has_content> 
244    <#assign typePathKey = pathKey.findByType("segment")> 
245    <#assign slug = slugs["segment"]> 
246 
247    <#assign idPathKey = typePathKey.getKeyId()> 
248    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
249 
250 
251    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
252    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
253    <#list categories as category> 
254        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
255    </#list> 
256 
257</#if> 
258 
259 
260<#if slugs["subsegment"]?has_content> 
261    <#assign typePathKey = pathKey.findByType("subsegment")> 
262    <#assign slug = slugs["subsegment"]> 
263 
264    <#assign idPathKey = typePathKey.getKeyId()> 
265    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
266 
267 
268    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
269    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
270    <#list categories as category> 
271        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
272    </#list> 
273 
274</#if> 
275 
276 
277<#assign prueba =  aeq.setAllCategoryIds(categoriesArrayAND) > 
278<#assign prueba =  aeq.setAnyCategoryIds(categoriesArrayOR) > 
279 
280<#assign prueba =  aeq.setAllTagIds(tagsArrayAND) > 
281<#assign prueba =  aeq.setAnyTagIds(tagsArrayOR) > 
282 
283<#assign prueba =  aeq.setStart(0) > 
284<#assign prueba =  aeq.setEnd(size) > 
285 
286<#if orders1??> 
287    <#assign prueba =  aeq.setOrderByCol1(orders1[0]) > 
288</#if> 
289 
290<#if orders2??> 
291    <#assign prueba =  aeq.setOrderByCol2(orders2[0]) > 
292</#if> 
293 
294 
295<#assign assetEntryList = AssetEntryLocalService.getEntries(aeq)> 
296 
297<#assign blogCarrusel = "blog-carrusel-" + randomNamespace> 
298<#if assetEntryList?has_content> 
299   <#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
300   <#assign values = portletPreferences['queryValues0'] />  
301   <section id="${blogCarrusel}">  
302		<h2 class="text-center title-big"> 
303			<#if values?has_content> 
304	         	<#assign inMainCategories = false/> 
305	         	<#assign mainCategories=[]/> 
306	         	<#assign otherCategories=[]/> 
307	          
308		         <#list values as value> 
309		         	<#assign category = AssetCategoryLocalService.getCategory(getterUtil.getLong(value))/> 
310		         	<#if category.getParentCategoryId() == 0 > 
311		         		<#assign vocabulary = AssetVocabularyLocalService.getAssetVocabulary(category.getVocabularyId())/> 
312		         		<#if category.getVocabularyId() == 59789 || vocabulary.getName() == "Categorías"> 
313		         			<#assign inMainCategories = true/> 
314		         	 		<#assign mainCategories = mainCategories + [AssetCategoryLocalService.getCategory(getterUtil.getLong(value))]/> 
315		         	 	<#else> 
316		         	 		<#assign otherCategories = otherCategories + [AssetCategoryLocalService.getCategory(getterUtil.getLong(value))]/> 
317		         		</#if> 
318		         	<#else> 
319		         		<#assign otherCategories = otherCategories + [AssetCategoryLocalService.getCategory(getterUtil.getLong(value))]/> 
320		         	</#if> 
321		         </#list> 
322		          
323		        <#if inMainCategories> 
324		         	<#if mainCategories?has_content> 
325			         	<#assign titleCategory = mainCategories?first> 
326		        	</#if> 
327		        <#else> 
328		        	<#if otherCategories?has_content> 
329			         	<#assign titleCategory = otherCategories?first> 
330		        	</#if> 
331		        </#if> 
332	         	<#if titleCategory?has_content> 
333	         		${titleCategory.getTitle(themeDisplay.getLocale())} 
334	         	</#if> 
335	        </#if> 
336		</h2>  
337		<div class="blog-carrusel"> 
338		<#list assetEntryList as entry>  
339			<#assign renderer = entry.getAssetRenderer()>  
340			<#assign className = renderer.getClassName() > 
341			<#if className == "com.liferay.journal.model.JournalArticle" >  
342				<#assign journalArticle = renderer.getArticle() >  
343                <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
344                <#assign rootElement = document.getRootElement() >  
345                <#list rootElement.elements() as dynamicElement >  
346					<#if "fotodeportada" == dynamicElement.attributeValue("name") > 
347                        <#assign fotodeportada = dynamicElement.element("dynamic-content").getText() > 
348                        <#assign fotodeportadaChild = dynamicElement.selectSingleNode("/root/dynamic-element[@name='fotodeportada']/dynamic-element")> 
349                      	<#assign descripcionimagenportada = fotodeportadaChild.element("dynamic-content").getText() > 
350                     </#if> 
351                     <#if "introduccion" == dynamicElement.attributeValue("name") >  
352                        <#assign introduccion = dynamicElement.element("dynamic-content").getText() >  
353                     </#if>  
354                     <#if "titulo" == dynamicElement.attributeValue("name") >  
355                        <#assign titulo = dynamicElement.element("dynamic-content").getText() >  
356                     </#if>  
357                     <#if "descripcionimagenportada" == dynamicElement.attributeValue("name") > 
358                     	<#assign descripcionimagenportada = dynamicElement.element("dynamic-content").getText() > 
359                     </#if> 
360                     <#if "path" == dynamicElement.attributeValue("name") >  
361                        <#assign path = dynamicElement.element("dynamic-content").getText() >  
362                     </#if>  
363				</#list>  
364				<#if titulo?has_content> 
365					<#assign locale_lang = themeDisplay.getLocale().getLanguage()> 
366					<#if locale_lang == 'ca'> 
367						<#assign locale_lang = 'va'> 
368					</#if> 
369					<#assign articFolder = journalArticle.getFolder().getExpandoBridge().getAttributes() > 
370					<#assign slugArtic = "slug_" + locale_lang > 
371					<#assign urlFriendly = language_url + articFolder[slugArtic] + journalArticle.getUrlTitle(themeDisplay.getLocale()) >  
372					<div class="slick-item"> 
373		            	<div class="data">  
374		                <#if fotodeportada?has_content>  
375		                	<#if descripcionimagenportada?has_content> 
376		                		<img loading="lazy" class="portada-blog-carousel image-result" src="${fotodeportada}" alt="${descripcionimagenportada}" aria-hidden="true"/>  
377		                	<#else> 
378		                		<img loading="lazy" class="portada-blog-carousel image-result" src="${fotodeportada}" alt="" aria-hidden="true" />  
379		                	</#if> 
380						<#else>  
381		                    <img loading="lazy" class="portada-blog-carousel image-result" src="/o/main-theme/images/no_image.png" alt="" aria-hidden="true" />  
382		                </#if>  
383		              	</div>  
384		                <#if urlFriendly?has_content>  
385		                	<div class="data title-medium"> 
386		                        <a href="${urlFriendly}">${titulo}</a> 
387		                    </div> 
388		                </#if> 
389	                    <!--<div class="data date-blog subtitle-result">${renderer.getDisplayDate()?date}</div> --> 
390		                <#if introduccion?has_content>  
391		                    <p class="data intro-blog text-result">${introduccion}</p>  
392		                </#if>  
393		      		</div>  
394               	</#if>      
395			</#if>  
396		</#list>  
397	</div> 
398</section>  
399 
400 
401<style> 
402#${blogCarrusel} {  
403  margin: 5rem 0; 
404
405#${blogCarrusel} .portada-blog-carousel {  
406  height: 20rem;  
407  width: 100%;  
408  object-fit: cover;  
409  margin: 0 auto;  
410
411#${blogCarrusel} .slick-item {   
412  padding: 0 1rem 1rem 1rem; 
413
414#${blogCarrusel} .slick-item[aria-hidden=true] { 
415  visibility: hidden; 
416  height: 0; 
417
418</style>  
419 
420<link rel="stylesheet" type="text/css" href="slick/slick.css"/> <link rel="stylesheet" type="text/css" href="slick/slick-theme.css"/>  
421<script> 
422      $(window).ready(function() { 
423          var total = "${assetEntryList?size}"; 
424            if(typeof $.fn.slick === 'function'){ 
425                $("#${blogCarrusel} .blog-carrusel").slick({ 
426                  dots: total>1, 
427                    arrows: false, 
428                    infinite: true, 
429                    slidesToShow: 1, 
430                    slidesToScroll: 1, 
431                    autoplay: true, 
432                    autoplaySpeed: 10000, 
433                    useTransform:false 
434                 }); 
435
436      }); 
437   </script>  
438<#else>      
439<#assign usrRoles = user.getRoles()> 
440<#assign blogCarrusel = "blog-carrusel-" + randomNamespace> 
441<style> 
442#${blogCarrusel} .empty-message { 
443	color: #c28a03; 
444	font-size: 1.4rem; 
445	font-weight: 600; 
446	line-height: 1.2; 
447	margin-top: 1rem; 
448
449</style>  
450<#list usrRoles as usrRole> 
451    <#if usrRole.getName() == "Administrator"> 
452    <section id="${blogCarrusel}" class="pt-5 pb-5"> 
453       <div class="text-uppercase text-center empty-message f-source-sans-pro"> 
454        <@liferay.language key="highlighted.search.results.empty"/> 
455       </div> 
456      </section>             
457    </#if>  
458</#list>  
459</#if>