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#102542" at line 2, column 28]

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

Publicaciones