Web de Turismo en la Comunitat Valenciana
Vive experiencias inolvidables
Explora la Comunitat Valenciana
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> pathValue.getBySlugName(idPathKey, slug, custom_language) [in template "20099#20135#4483822" at line 332, column 29]
----
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 nameCategory = pathValue.getB... [in template "20099#20135#4483822" at line 332, column 5]
----
1<style>
2.section-planifica {
3 background: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)), url('https://multimedia.comunitatvalenciana.com/B5579109E07F4DE0BBB00951B9CF75F7/img/56C4EAD605B24A48A89D04D3D9BEF3E0/Cabalgata_del_fuego_7H9A4126_56C4EAD605B24A48A89D04D3D9BEF3E0size-big.jpg');
4 background-position: center;
5 padding-bottom: 3rem;
6 padding-top: 3rem;
7 font-family: 'Ivy Mode' !important;
8}
9.section-planifica .see-more {
10 display: flex;
11 justify-content: flex-end;
12 padding-top: 2rem;
13 padding-bottom: 2rem;
14}
15.section-planifica .button {
16 color: #c28a03;
17 border: #c28a03 solid 2px;
18 padding: 0.5rem 1.5rem 0.5rem 1.5rem;
19 text-transform: uppercase;
20 font-size: 1.2rem;
21 width: fit-content;
22 background: black;
23 font-family: 'Source Sans Pro';
24 font-weight: 700;
25}
26
27.section-planifica .multi-carrusel .slick-dots button {
28 background-color: white !important;
29}
30.section-planifica .title-wrapper{
31 font-size: 4.5rem;
32 padding: 2rem 0 2rem 0;
33 color: #FFF;
34}
35@media (max-width: 992px) {
36 .section-planifica .see-more {
37 justify-content: center;
38 }
39
40 .section-planifica .title-wrapper{
41 text-align: center !important;
42 font-size: 2.5rem;
43 }
44 .section-planifica .title-image-wrapper {
45 font-size: 1.5rem !important;
46 }
47 .section-planifica .data {
48 height: 300px !important;
49 }
50 .section-planifica .image-result {
51 object-fit: cover;
52 border-radius: 0px !important;
53 height: 300px !important;
54 }
55 .section-planifica a.three-rows-a{
56 position: relative;
57 display: inline-block;
58 height: 100%;
59 width: 100%;
60 }
61 .section-planifica .slick-item.three-rows-slide{
62 width: 100% !important;
63 }
64}
65@media (max-width: 320px) {
66 .section-planifica .title-image-wrapper {
67 font-size: 1.2rem !important;
68 }
69}
70.section-planifica .title-wrapper .plan-highlighted-title {
71 color: #c28a03 !important;
72 font-weight: 600;
73 font-style: italic;
74}
75.section-planifica .data {
76 margin: 0.5rem;
77 height: 400px;
78}
79.section-planifica .title-image-wrapper:hover {
80 opacity: 0.8 !important;
81 color: black !important;
82}
83.section-planifica a:hover {
84 color: black !important;
85}
86
87.section-planifica .title-image-wrapper {
88 font-size: 1.6rem;
89 font-weight: initial;
90 padding: 1rem;
91 position: absolute;
92 z-index: 1;
93 background: #fbfbfbcc;
94 bottom: 0px;
95 width: 100%;
96 text-align: center;
97 margin: 0;
98 min-height: 7rem;
99 display: flex;
100 justify-content: center;
101 align-items: center;
102}
103.section-planifica .image-result {
104 object-fit: cover;
105 border-radius: 0px !important;
106 height: 100% !important;
107}
108.section-planifica .slick-dotted {
109 margin-bottom: 2.5rem;
110}
111</style>
112
113
114<#assign aeq = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery")/>
115<#assign pathKey = serviceLocator.findService("es.cv.urlfilter.service.PathKeyLocalService")>
116<#assign pathValue = serviceLocator.findService("es.cv.urlfilter.service.PathValueLocalService")>
117<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
118<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
119<#assign AssetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")>
120<#assign pfu = serviceLocator.findService("com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil")>
121<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
122<#assign inMainCategories = false/>
123
124<#if selectionStyle == "dynamic" >
125
126<#assign isDynamic = true >
127
128<#assign language = locale.getLanguage()!"es" />
129 <#assign custom_language = "Es"
130 language_url = "/"+language>
131
132 <#if language == "es">
133 <#assign custom_language = "Es">
134 <#elseif language == "en">
135 <#assign custom_language = "En">
136 <#elseif language == "fr">
137 <#assign custom_language = "Fr">
138 <#elseif language == "de">
139 <#assign custom_language = "De">
140 <#elseif language == "ca">
141 <#assign custom_language = "Va"
142 language_url="/va" >
143 </#if>
144
145
146
147<#assign slugs = {
148 "province": (avtContext.provinceSlug)!'',
149 "township": (avtContext.townshipSlug)!'',
150 "type": (avtContext.typeSlug)!'',
151 "subtype": (avtContext.subtypeSlug)!'',
152 "segment": (avtContext.segmentSlug)!'',
153 "subsegment": (avtContext.subsegmentSlug)!'',
154 "resource": (avtContext.resourceSlug)!''
155 } />
156
157<#assign dinamicPage = "false">
158<#assign typePathKey = "">
159<#assign idPathKey = 0>
160<#assign slug = "">
161
162<#assign queryValues0 = [] >
163<#if portletPreferences["queryValues0"]??>
164 <#assign queryValues0 = portletPreferences["queryValues0"] >
165</#if>
166
167
168<#if portletPreferences["orderByColumn1"]??>
169 <#assign orders1 = portletPreferences["orderByColumn1"] >
170</#if>
171
172<#if portletPreferences["orderByColumn2"]??>
173 <#assign orders2 = portletPreferences["orderByColumn2"] >
174</#if>
175
176<#assign queryValues1 = [] >
177<#if portletPreferences["queryValues1"]??>
178 <#assign queryValues1 = portletPreferences["queryValues1"] >
179</#if>
180
181<#assign deltas = [] >
182<#if portletPreferences["delta"]??>
183 <#assign deltas = portletPreferences["delta"] >
184</#if>
185
186<#assign queryAndOperator0 = [] >
187<#if portletPreferences["queryAndOperator0"]??>
188 <#assign queryAndOperator0 = portletPreferences["queryAndOperator0"] >
189</#if>
190
191<#assign queryAndOperator1 = [] >
192<#if portletPreferences["queryAndOperator1"]??>
193 <#assign queryAndOperator1 = portletPreferences["queryAndOperator1"] >
194</#if>
195
196<#assign queryNames0 = [] >
197<#if portletPreferences["queryName0"]??>
198 <#assign queryNames0 = portletPreferences["queryName0"] >
199</#if>
200
201<#assign queryNames1 = [] >
202<#if portletPreferences["queryName1"]??>
203 <#assign queryNames1 = portletPreferences["queryName1"] >
204</#if>
205
206
207<#assign categoriesArrayAND = [] />
208<#assign categoriesArrayOR = [] />
209
210<#assign tagsArrayAND = [] />
211<#assign tagsArrayOR = [] />
212
213
214<#--Numero de elementos a mostrar-->
215<#assign size = 20?number >
216<#list deltas as delta>
217 <#assign size = delta?number >
218</#list>
219
220<#--Nombre de la primera query-->
221<#list queryNames0 as queryName0>
222 <#assign firstQuery = queryName0 >
223</#list>
224<#--Nombre de la segunda query-->
225<#list queryNames1 as queryName1>
226 <#assign secondQuery = queryName1 >
227</#list>
228
229<#--Operador de la primera query-->
230<#list queryAndOperator0 as order0Aux>
231 <#assign orderAnd0 = order0Aux >
232</#list>
233
234<#--Operador de la primera query-->
235<#list queryAndOperator1 as order1Aux>
236 <#assign orderAnd1 = order1Aux >
237</#list>
238
239
240<#if firstQuery??>
241 <#if firstQuery == "assetCategories">
242 <#list queryValues0 as queryValue0>
243 <#assign num = queryValue0?number>
244 <#if orderAnd0 == "true">
245 <#assign categoriesArrayAND = categoriesArrayAND + [ num ] />
246 </#if>
247 <#if orderAnd0 == "false">
248 <#assign categoriesArrayOR = categoriesArrayOR + [ num ] />
249 </#if>
250 </#list>
251 <#elseif firstQuery == "assetTags">
252 <#list queryValues0 as queryValue0>
253 <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue0 + "%"))>
254 <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) >
255 <#list tags as tag>
256 <#if orderAnd0 == "true">
257 <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] />
258 </#if>
259 <#if orderAnd0 == "false">
260 <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] />
261 </#if>
262 </#list>
263 </#list>
264 </#if>
265</#if>
266
267
268<#if secondQuery??>
269 <#if secondQuery == "assetCategories">
270 <#list queryValues1 as queryValue1>
271 <#assign num = queryValue1?number>
272 <#if orderAnd1 == "true">
273 <#assign categoriesArrayAND = categoriesArrayAND + [ num ] />
274 </#if>
275 <#if orderAnd1 == "false">
276 <#assign categoriesArrayOR = categoriesArrayOR + [ num ] />
277 </#if>
278 </#list>
279 <#elseif secondQuery == "assetTags">
280 <#list queryValues1 as queryValue1>
281 <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue1 + "%"))>
282 <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) >
283 <#list tags as tag>
284 <#if orderAnd1 == "true">
285 <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] />
286 </#if>
287 <#if orderAnd1 == "false">
288 <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] />
289 </#if>
290 </#list>
291 </#list>
292 </#if>
293</#if>
294
295
296
297
298<#if slugs["township"]?has_content && slugs["province"]?has_content>
299 <#assign typePathKey = pathKey.findByType("township")>
300 <#assign slug = slugs["township"]>
301 <#assign idPathKey = typePathKey.getKeyId()>
302 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
303
304
305 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
306 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
307 <#list categories as category>
308 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
309 </#list>
310<#elseif slugs["province"]?has_content>
311 <#assign typePathKey = pathKey.findByType("province")>
312 <#assign slug = slugs["province"]>
313
314 <#assign idPathKey = typePathKey.getKeyId()>
315 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
316 <#assign nameCategory = nameCategory + " (Provincia)">
317
318 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
319 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
320 <#list categories as category>
321 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
322 </#list>
323
324</#if>
325
326
327<#if slugs["type"]?has_content>
328 <#assign typePathKey = pathKey.findByType("type")>
329 <#assign slug = slugs["type"]>
330
331 <#assign idPathKey = typePathKey.getKeyId()>
332 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
333
334
335 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
336 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
337 <#list categories as category>
338 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
339 </#list>
340
341</#if>
342
343<#if slugs["subtype"]?has_content>
344 <#assign typePathKey = pathKey.findByType("subtype")>
345 <#assign slug = slugs["subtype"]>
346
347 <#assign idPathKey = typePathKey.getKeyId()>
348 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
349
350
351 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
352 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
353 <#list categories as category>
354 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
355 </#list>
356
357</#if>
358
359<#if slugs["segment"]?has_content>
360 <#assign typePathKey = pathKey.findByType("segment")>
361 <#assign slug = slugs["segment"]>
362
363 <#assign idPathKey = typePathKey.getKeyId()>
364 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
365
366
367 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
368 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
369 <#list categories as category>
370 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
371 </#list>
372
373</#if>
374
375
376<#if slugs["subsegment"]?has_content>
377 <#assign typePathKey = pathKey.findByType("subsegment")>
378 <#assign slug = slugs["subsegment"]>
379
380 <#assign idPathKey = typePathKey.getKeyId()>
381 <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)>
382
383
384 <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))>
385 <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) >
386 <#list categories as category>
387 <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] />
388 </#list>
389
390</#if>
391
392
393<#assign prueba = aeq.setAllCategoryIds(categoriesArrayAND) >
394<#assign prueba = aeq.setAnyCategoryIds(categoriesArrayOR) >
395
396<#assign prueba = aeq.setAllTagIds(tagsArrayAND) >
397<#assign prueba = aeq.setAnyTagIds(tagsArrayOR) >
398
399<#assign prueba = aeq.setStart(0) >
400<#assign prueba = aeq.setEnd(size) >
401
402<#if orders1??>
403 <#assign prueba = aeq.setOrderByCol1(orders1[0]) >
404</#if>
405
406<#if orders2??>
407 <#assign prueba = aeq.setOrderByCol2(orders2[0]) >
408</#if>
409
410<#assign assetEntryList = AssetEntryLocalService.getEntries(aeq)>
411
412<#else>
413 <#assign isDynamic = false >
414 <#assign assetEntryList = entries>
415 <#assign language = locale.getLanguage()!"es" />
416 <#assign language_url = "/"+language>
417 <#if language == "ca">
418 <#assign language_url="/va" >
419 </#if>
420</#if>
421
422
423
424<#assign multiCarrusel = "multi-carrusel-" + randomNamespace>
425 <#if assetEntryList?has_content>
426 <#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
427 <#assign JournalClassName = "com.liferay.journal.model.JournalArticle">
428 <#assign values = portletPreferences['queryValues0']![] />
429
430
431 <section id="${multiCarrusel}" class="section-planifica">
432
433 <div class="wrapped-content">
434 <#assign slugList = [] />
435 <h2 class="title-wrapper text-right">
436 <@liferay.language key="portal.template.planifica.title"/>
437 </h2>
438
439 <#if values?has_content && isDynamic>
440 <#list values as value>
441 <#assign category = AssetCategoryLocalService.getCategory(getterUtil.getLong(value))/>
442 <#if category.getParentCategoryId() == 0 >
443 <#assign vocabulary = AssetVocabularyLocalService.getAssetVocabulary(category.getVocabularyId())/>
444 <#if category.getVocabularyId() == 59789 || vocabulary.getName() == "Categorías">
445 <#assign inMainCategories = true/>
446 </#if>
447 </#if>
448 </#list>
449 </#if>
450
451 <#if inMainCategories || isDynamic == false>
452 <div class="multi-carrusel">
453 <#list assetEntryList as entry>
454 <#assign renderer = entry.getAssetRenderer()>
455 <#assign className = renderer.getClassName() >
456 <#if className == "com.liferay.journal.model.JournalArticle" >
457 <#assign journalArticle = renderer.getArticle() >
458 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(themeDisplay.getLocale())) >
459 <#assign rootElement = document.getRootElement() >
460 <#list rootElement.elements() as dynamicElement >
461 <#if "fotodeportada" == dynamicElement.attributeValue("name") >
462 <#assign fotodeportada = dynamicElement.element("dynamic-content").getText() >
463
464 </#if>
465 <#if "titulo" == dynamicElement.attributeValue("name") >
466 <#assign titulo = dynamicElement.element("dynamic-content").getText() >
467 </#if>
468 <#if "path" == dynamicElement.attributeValue("name") >
469 <#assign path = dynamicElement.element("dynamic-content").getText() >
470 </#if>
471 </#list>
472 </#if>
473
474
475 <#assign locale = themeDisplay.getLocale().getLanguage()>
476 <#if locale == 'ca'>
477 <#assign locale = 'va'>
478 </#if>
479
480 <#assign articFolder = journalArticle.getFolder().getExpandoBridge().getAttributes() >
481 <#assign slugArtic = "slug_" + locale >
482 <#assign urlFriendly = language_url+articFolder[slugArtic] + journalArticle.getUrlTitle(themeDisplay.getLocale()) >
483
484 <#if !slugList?seq_contains(articFolder[slugArtic])>
485 <#assign slugList = slugList + [articFolder[slugArtic]]>
486 <#assign urlSlugButton = articFolder[slugArtic] >
487 <#else>
488 <#assign urlSlugButton = articFolder[slugArtic] >
489 </#if>
490
491
492 <#if assetEntryList?size gt 3>
493 <div class="slick-item">
494 <#else>
495 <div class="slick-item three-rows-slide">
496 </#if>
497 <div class="data position-relative">
498 <#if assetEntryList?size gt 3>
499 <a href="${urlFriendly}">
500 <#else>
501 <a class="three-rows-a" href="${urlFriendly}">
502 </#if>
503
504 <#if fotodeportada?has_content>
505 <img loading="lazy" class="portada-blog-carousel image-result" src="${fotodeportada}" alt="" aria-hidden="true"/>
506 <#else>
507 <img loading="lazy" class="portada-blog-carousel image-result" src="/o/main-theme/images/no_image.png" alt="" aria-hidden="true" />
508 </#if>
509
510 <#if titulo?has_content>
511 <#if urlFriendly?has_content>
512 <div class="title-image-wrapper">
513 <span>${titulo}</span>
514 </div>
515 </#if>
516 </#if>
517 </a>
518 </div>
519 </div>
520 </#list>
521 </div>
522 </#if>
523
524 <#if slugList?size == 1 && urlSlugButton != "">
525 <div class="see-more">
526 <a href="${urlSlugButton}" class="button-wrapper">
527 <div class="button"><@liferay.language key="portal.template.planifica.see.more"/></div>
528 </a>
529 </div>
530 </#if>
531 </div>
532 </section>
533
534<script>
535
536 $(window).ready(function() {
537 var total = "${assetEntryList?size}";
538 if(typeof $.fn.slick === 'function'){
539 $("#${multiCarrusel} .multi-carrusel").slick({
540 dots: total>3,
541 arrows: false,
542 infinite: true,
543 slidesToShow: 3,
544 slidesToScroll: 3,
545 useTransform:false,
546 responsive: [
547 {
548 breakpoint: 992,
549 settings: {
550 slidesToShow: total>3? 1 : 3,
551 slidesToScroll: 1,
552 infinite: true,
553 dots: total>3,
554 arrows: false,
555 }
556 },
557 {
558 breakpoint: 780,
559 settings: {
560 slidesToShow: total>3? 1 : 3,
561 slidesToScroll: 1,
562 infinite: true,
563 dots: total>3,
564 arrows: false,
565 }
566 }
567 ]
568 });
569 }
570
571 });
572 $(window).resize(function(){
573 if(typeof $.fn.slick === 'function'){
574 $("#${multiCarrusel} .multi-carrusel")[0].slick.refresh()
575 }
576 });
577</script>
578 <#else>
579 <#assign usrRoles = user.getRoles()>
580 <#assign multiCarrusel = "multi-carrusel-" + randomNamespace>
581<style>
582
583#${multiCarrusel} {
584 padding: 5rem 0;
585}
586#${multiCarrusel} .portada-blog-carousel {
587 object-fit: cover;
588 margin: 0 auto;
589 height: 15rem;
590 width: 100%;
591}
592#${multiCarrusel} .slick-item {
593 padding: 1rem;
594 padding-top: 0;
595}
596#${multiCarrusel} .slick-item[aria-hidden=true] {
597 visibility: hidden;
598 height: 0;
599}
600
601#${multiCarrusel} .slick-dotted.slick-slider {
602 margin-bottom: 0;
603}
604
605#${multiCarrusel} .slick-dots {
606 position: relative;
607}
608
609#${multiCarrusel} .empty-message {
610 color: #c28a03;
611 font-size: 1.4rem;
612 font-weight: 600;
613 line-height: 1.2;
614 margin-top: 1rem;
615}
616</style>
617
618<#list usrRoles as usrRole>
619 <#if usrRole.getName() == "Administrator">
620 <section id="${multiCarrusel}" class="pt-5 pb-5">
621 <div class="text-uppercase text-center empty-message f-source-sans-pro">
622 <@liferay.language key="highlighted.search.results.empty"/>
623 </div>
624 </section>
625 </#if>
626</#list>
627</#if>