Navegación por categorías
Java method "com.sun.proxy.$Proxy67.getAssetCategory(long)" threw an exception when invoked on com.sun.proxy.$Proxy67 object "com.liferay.asset.categories.internal.service.AssetCategoryPropertyAssetCategoryLocalServiceWrapper@2dbb9803"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: category = assetCategoryService.getAs... [in template "217051#217099#573763" at line 49, column 22] - Reached through: #assign-container [in template "217051#217099#573763" at line 49, column 13] ----
1<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
2 assetCategoryPropertyService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService")
3 SAXReaderUtil = staticUtil["com.liferay.portal.kernel.xml.SAXReaderUtil"]
4 HtmlUtil = staticUtil["com.liferay.portal.kernel.util.HtmlUtil"]
5 layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")
6 PortletURLFactoryUtil = staticUtil["com.liferay.portal.kernel.portlet.PortletURLFactoryUtil"]
7 PortletRequest = staticUtil["javax.portlet.PortletRequest"]
8 journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
9 ParamUtil = staticUtil["com.liferay.portal.kernel.util.ParamUtil"]
10 categoryId = ParamUtil.getLong(request,"categoryId", 0)
11 title = ParamUtil.getString(request,"title", "")
12 maxLoop = 100
13 imageId = ParamUtil.getString(request,"imageId","")
14/>
15
16<#if (categoryId <= 0) >
17 <#assign categoryId = ParamUtil.getLong(renderRequest,"categoryId", 0)/>
18</#if>
19
20<#if (categoryId <= 0) >
21 <#if entries?has_content>
22 <#foreach aCategory in entries?first.getCategories()>
23 <#assign aCategory = aCategory/>
24 <#break>
25 </#foreach>
26 <#list 1..maxLoop as i>
27 <#list 1..maxLoop as j>
28 <#if aCategory.getParentCategory()?has_content>
29 <#assign aCategory = aCategory.getParentCategory()/>
30 <#else>
31 <#assign categoryId = aCategory.getCategoryId()/>
32 </#if>
33 <#break>
34 </#list>
35 <#if (categoryId > 0) >
36 <#break>
37 </#if>
38 </#list>
39 </#if>
40</#if>
41
42
43<nav aria-label="breadcrumb">
44 <ol class="breadcrumb">
45 <li class="breadcrumb-title"><span>${languageUtil.get(locale,"webasturias.breadcrumb-title")}</span></li>
46 <#--<li class="breadcrumb-item"><a href="/">${languageUtil.get(locale,"webasturias.breadcrumb-asturias")}</a></li>-->
47 <#if (categoryId > 0) >
48
49 <#assign category = assetCategoryService.getAssetCategory(categoryId)
50 categoryAncestors = category.getAncestors()
51 breadCrumbContent = ""/>
52
53 <#if categoryAncestors?has_content>
54 <#foreach categoryAncestor in categoryAncestors>
55
56 <#assign hideCategory = false/>
57
58 <#-- obtener el contenido de la categoría hija -->
59 <#assign contentId = (assetCategoryPropertyService.fetchCategoryProperty(categoryAncestor.getCategoryId(), "idContenido").getValue())!""/>
60 <#if contentId ? has_content>
61 <#assign journalArticleSub = journalArticleService.getLatestArticle(groupId,contentId)/>
62
63 <#if journalArticleSub?has_content>
64 <#-- obtener el contenido de la categoría actual -->
65 <#assign document = SAXReaderUtil.read(journalArticleSub.getContentByLocale(locale))
66 pageDetailNode = document.selectSingleNode("/root/dynamic-element[@name='paginaDetalle']/dynamic-content")
67 />
68 <#if document.selectSingleNode("/root/dynamic-element[@name='visibleMigas']/dynamic-content")?has_content>
69 <#assign visibleMigasNode = document.selectSingleNode("/root/dynamic-element[@name='visibleMigas']/dynamic-content")
70 visibleMigas = visibleMigasNode.getText()
71 hideCategory = visibleMigas != "1"/>
72 </#if>
73 </#if>
74
75 <#if pageDetailNode?has_content && pageDetailNode.getText()?has_content>
76 <#assign pageDetail = pageDetailNode.getText()/>
77 <#if (pageDetail?index_of("@")>0)>
78 <#assign pageDetailPosition = (pageDetail?index_of("@")-1)
79 pageDetail = pageDetail[0..pageDetailPosition]
80 layoutDetail = layoutLocalService.getLayout(themeDisplay.getScopeGroupId(),false,pageDetail?number)
81 />
82 </#if>
83 <#else>
84 <#assign detailPage = "general"
85 layoutDetail = layoutLocalService.getFriendlyURLLayout(themeDisplay.getScopeGroupId(), false, "/"+detailPage) />
86 </#if>
87
88 <#assign categoryUrl = PortletURLFactoryUtil.create(request, "com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet", layoutDetail.getPlid(), PortletRequest.RENDER_PHASE) />
89 ${categoryUrl.setParameter("categoryId",categoryAncestor.getCategoryId()+"")}
90
91 <#if !(hideCategory?has_content && hideCategory)>
92 <#if categoryAncestor.isRootCategory()>
93 <#assign breadCrumbContent = "<li class='breadcrumb-item'><a href='"+categoryUrl+"'>"+categoryAncestor.getTitle(locale)+" </a> </li>"+breadCrumbContent/>
94 <#else>
95 <#assign breadCrumbContent = "<li class='breadcrumb-item'><a href='"+categoryUrl+"'>"+categoryAncestor.getTitle(locale)+" </a> </li>"+breadCrumbContent/>
96 </#if>
97 </#if>
98 </#if>
99 </#foreach>
100
101 ${breadCrumbContent}
102
103 </#if>
104
105 <#assign hideCategory = false/>
106 <#assign contentId = (assetCategoryPropertyService.fetchCategoryProperty(category.getCategoryId(), "idContenido").getValue())!""/>
107 <#if contentId ? has_content>
108 <#assign journalArticleSub = journalArticleService.getLatestArticle(groupId,contentId)/>
109
110 <#if journalArticleSub?has_content>
111 <#-- obtener el contenido de la categoría actual -->
112 <#assign document = SAXReaderUtil.read(journalArticleSub.getContentByLocale(locale))
113 pageDetailNode = document.selectSingleNode("/root/dynamic-element[@name='paginaDetalle']/dynamic-content")
114 />
115 <#if document.selectSingleNode("/root/dynamic-element[@name='visibleMigas']/dynamic-content")?has_content>
116 <#assign visibleMigasNode = document.selectSingleNode("/root/dynamic-element[@name='visibleMigas']/dynamic-content")
117 visibleMigas = visibleMigasNode.getText()
118 hideCategory = visibleMigas != "1"/>
119 </#if>
120 </#if>
121
122 <#if pageDetailNode?has_content && pageDetailNode.getText()?has_content>
123 <#assign pageDetail = pageDetailNode.getText()/>
124 <#if (pageDetail?index_of("@")>0)>
125 <#assign pageDetailPosition = (pageDetail?index_of("@")-1)
126 pageDetail = pageDetail[0..pageDetailPosition]
127 layoutDetail = layoutLocalService.getLayout(themeDisplay.getScopeGroupId(),false,pageDetail?number)
128 />
129 </#if>
130 <#else>
131 <#if category.isRootCategory()>
132 <#assign detailPage = "inicio"/>
133 <#else>
134 <#assign detailPage = "general"/>
135 </#if>
136
137 <#assign layoutDetail = layoutLocalService.getFriendlyURLLayout(themeDisplay.getScopeGroupId(), false, "/"+detailPage) />
138 </#if>
139
140 <#assign categoryUrl = PortletURLFactoryUtil.create(request, "com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet", layoutDetail.getPlid(), PortletRequest.RENDER_PHASE) />
141 ${categoryUrl.setParameter("categoryId",category.getCategoryId()+"")}
142
143 <#if !(hideCategory?has_content && hideCategory)>
144 <#if category.isRootCategory()>
145 <#if title?has_content>
146 <li class="breadcrumb-item"><a href="/inicio">${category.getTitle(locale)}</a></li>
147 <#else>
148 <li class="breadcrumb-item active">${category.getTitle(locale)}</li>
149 </#if>
150 <#else>
151 <#if title?has_content>
152 <li class="breadcrumb-item"><a href="${categoryUrl}<#if imageId ? has_content>?imageId=${imageId}&title=${HtmlUtil.escapeURL(category.getTitle(locale))}</#if>">${category.getTitle(locale)}</a></li>
153 <#else>
154 <li class="breadcrumb-item active">${category.getTitle(locale)}</li>
155 </#if>
156 </#if>
157 </#if>
158 </#if>
159 </#if>
160 <#if title ? has_content>
161 <li class="breadcrumb-item active">${title}</li>
162 </#if>
163 </ol>
164</nav>
165
166<script type="text/javascript">
167 $( document ).ready(function() {
168 if(typeof ga !== "undefined") {
169 <#if title ? has_content>
170 var pageName = '${title}';
171 <#elseif category ? has_content>
172 var pageName = '${category.getName()}';
173 <#else>
174 var pageName = location.pathname;
175 </#if>
176 ga( 'send', 'pageview', {
177 'page': pageName,
178 'title': pageName
179 } );
180 }
181 });
182</script>
Navegación por categorías
El 'Camín de los Santuarios' conecta Asturias y Cantabria como referente cultural y turístico
- El itinerario que enlaza la catedral de Oviedo, el Real Sitio y Santo Toribio de Liébana destaca por su riqueza patrimonial, etnográfica y paisajística
- El Gobierno del Principado lanza una aplicación específica con toda la información de utilidad para completar el recorrido
Los presidentes Adrián Barbón y Miguel Ángel Revilla inauguran la ruta, que se pone en marcha con motivo de la conmemoración de los 1.300 años de la batalla de Cuadonga/Covadonga
Los presidentes del Principado, Adrián Barbón, y de Cantabria, Miguel Ángel Revilla, han inaugurado hoy el Camín de los Santuarios, una nueva ruta inspirada en el histórico recorrido que enlaza la catedral de Oviedo con Cuadonga/Covadonga y Santo Toribio de Liébana, en Cantabria, tres hitos fundamentales en la historia de la monarquía asturiana. La apertura y promoción de este itinerario se enmarca en la celebración de los 1.300 años de la batalla de Cuadonga/Covadonga.
La consejera de Cultura, Política Llingüística y Turismo, Berta Piñán; el vicepresidente y consejero de Universidades, Igualdad, Cultura y Deporte de Cantabria, Pablo Zuloaga, y el consejero cántabro de Innovación, Industria, Transporte y Comercio, Javier López, junto con alcaldes de los municipios que atraviesa la ruta, han recorrido un tramo del Camín de los Santuarios desde el límite entre Asturias y Cantabria, hasta Merodio, en Peñamellera Baja, donde han participado en una visita guiada por el historiador Toño Huerta sobre los hitos arquitectónicos y etnográficos de la localidad.
El Camín de los Santuarios constituye un nuevo recurso, llamado a convertirse en referente cultural y turístico, para poner en valor los elementos patrimoniales, naturales y etnográficos que jalonan la ruta a lo largo de sus 200 kilómetros. El recorrido desde Liébana a Oviedo será un elemento dinamizador para los once concejos asturianos que atraviesa: Peñamellera Alta, Peñamellera Baja, Cabrales, Onís, Cangas de Onís, Parres, Piloña, Nava, Noreña, Siero y Oviedo.
El itinerario refleja la gran importancia del patrimonio histórico y cultural del interior de la comarca oriental asturiana, desde los vestigios prehistóricos hasta los cenobios e iglesias de variada tipológica, que abarcan el prerrománico, el románico, el renacimiento o el barroco; sin olvidar las construcciones civiles, los elementos etnográficos y los espacios de gran valor paisajístico integrados en la Red Natura 2000.
El Camín de los Santuarios se convierte en eje de un paisaje muy singular, llamado a convertirse en una referencia dentro de los itinerarios culturales europeos. Además, en 2023 se celebrará el septuagésimo cuarto Año Jubilar Lebaniego, en el que se volverá a abrir la Puerta del Perdón de Santo Toribio, con lo que la ruta tendrá un atractivo añadido.
Aplicación para la ruta
La Consejería de Cultura, Política Llingüística y Turismo ha impulsado el desarrollo de una aplicación sobre el Camín de los Santuarios, a cargo de la empresa Where is Asturias, y disponible en castellano, asturiano, inglés y francés. Esta herramienta permite a las personas que peregrinan disponer de toda la información útil para realizar el recorrido, a través de mapas y perfiles off line, guía de consejos, itinerarios, datos sobre las etapas, distancias y puntos de interés.
La aplicación facilita también el acceso a la información meteorológica en tiempo real y ofrece la posibilidad de crear durante el recorrido un diario de ruta con notas de texto, voz, fotos y vídeo. También incluye un diccionario en varios idiomas con frases habituales traducidas al español para ser leídas o locutadas desde la propia app.