Navegación por categorías
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> vocabulary [in template "646115#646149#789958" at line 26, column 22]
----
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 vocabulary.getVocabularyId() + ""... [in template "646115#646149#789958" at line 26, column 17]
---- 1<#assign ParamUtil = staticUtil["com.liferay.portal.kernel.util.ParamUtil"] 2 PortletURLFactoryUtil = staticUtil["com.liferay.portal.kernel.portlet.PortletURLFactoryUtil"] 3 PortletRequest = staticUtil["javax.portlet.PortletRequest"] 4 assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") 5 assetCategoryPropertyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryPropertyLocalService") 6 journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 7 layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") 8 categoryId = ParamUtil.getLong(request,"categoryId", 0) 9 title = ParamUtil.getString(request,"title", "") 10 maxLoop = 100 11 PropsUtil = staticUtil["com.liferay.portal.kernel.util.PropsUtil"] 12 portalVocabularyId = PropsUtil.get("medio.ambiente.vocabulary.id") 13 SAXReaderUtil = staticUtil["com.liferay.portal.kernel.xml.SAXReaderUtil"] 14 imageId = ParamUtil.getString(request,"imageId","") 15 HtmlUtil = staticUtil["com.liferay.portal.kernel.util.HtmlUtil"] 16/> 17 18<#if (categoryId <= 0) > 19 <#assign categoryId = ParamUtil.getLong(renderRequest,"categoryId", 0)/> 20</#if> 21 22<#if (categoryId <= 0) > 23 24 <#if entries?has_content> 25 <#foreach vocabulary in entries> 26 <#if vocabulary.getVocabularyId()+"" == portalVocabularyId> 27 <#foreach aCategory in vocabulary.getCategories()> 28 <#assign aCategory = aCategory/> 29 <#break> 30 </#foreach> 31 <#list 1..maxLoop as i> 32 <#list 1..maxLoop as j> 33 <#if aCategory.getParentCategory()?has_content> 34 <#assign aCategory = aCategory.getParentCategory()/> 35 <#else> 36 <#assign categoryId = aCategory.getCategoryId()/> 37 </#if> 38 <#break> 39 </#list> 40 <#if (categoryId > 0) > 41 <#break> 42 </#if> 43 </#list> 44 </#if> 45 </#foreach> 46 </#if> 47 48</#if> 49 50<nav aria-label="breadcrumb"> 51 <ol class="breadcrumb"> 52 <li class="breadcrumb-title"><span>${languageUtil.get(locale,"medio.ambiente.breadcrumb-title")}</span></li> 53 <li class="breadcrumb-item"><a href="http://www.asturias.es">${languageUtil.get(locale,"medio.ambiente.breadcrumb-asturias")}</a></li> 54 <#if (categoryId > 0) > 55 56 <#assign category = assetCategoryService.getAssetCategory(categoryId) 57 categoryAncestors = category.getAncestors() 58 breadCrumbContent = ""/> 59 60 <#if categoryAncestors?has_content> 61 <#foreach categoryAncestor in categoryAncestors> 62 63 <#assign hideCategory = false/> 64 65 <#-- obtener el contenido de la categoría hija --> 66 <#if assetCategoryPropertyService.getCategoryProperty(categoryAncestor.getCategoryId(),"idContenido") ? has_content > 67 <#assign contentIdProperty = assetCategoryPropertyService.getCategoryProperty(categoryAncestor.getCategoryId(),"idContenido")/> 68 <#assign contentId = contentIdProperty.getValue()/> 69 <#if contentId ? has_content> 70 <#assign journalArticleSub = journalArticleService.getLatestArticle(groupId,contentId)/> 71 72 <#if journalArticleSub?has_content> 73 <#-- obtener el contenido de la categoría actual --> 74 <#assign document = SAXReaderUtil.read(journalArticleSub.getContentByLocale(locale)) 75 pageDetailNode = document.selectSingleNode("/root/dynamic-element[@name='paginaDetalle']/dynamic-content") 76 /> 77 <#if document.selectSingleNode("/root/dynamic-element[@name='visibleMigas']/dynamic-content")?has_content> 78 <#assign visibleMigasNode = document.selectSingleNode("/root/dynamic-element[@name='visibleMigas']/dynamic-content") 79 visibleMigas = visibleMigasNode.getText() 80 hideCategory = visibleMigas != "1"/> 81 </#if> 82 </#if> 83 </#if> 84 85 86 <#if pageDetailNode?has_content && pageDetailNode.getText()?has_content> 87 <#assign pageDetail = pageDetailNode.getText()/> 88 <#if (pageDetail?index_of("@")>0)> 89 <#assign pageDetailPosition = (pageDetail?index_of("@")-1) 90 pageDetail = pageDetail[0..pageDetailPosition] 91 layoutDetail = layoutLocalService.getLayout(themeDisplay.getScopeGroupId(),false,pageDetail?number) 92 /> 93 </#if> 94 <#else> 95 <#assign detailPage = "general" 96 layoutDetail = layoutLocalService.getFriendlyURLLayout(themeDisplay.getScopeGroupId(), false, "/"+detailPage) /> 97 </#if> 98 99 <#assign categoryUrl = PortletURLFactoryUtil.create(request, "com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet", layoutDetail.getPlid(), PortletRequest.RENDER_PHASE) /> 100 ${categoryUrl.setParameter("categoryId",categoryAncestor.getCategoryId()+"")} 101 102 <#if !(hideCategory?has_content && hideCategory)> 103 <#if categoryAncestor.isRootCategory()> 104 <#assign breadCrumbContent = "<li class='breadcrumb-item'><a href='/inicio'>"+categoryAncestor.getTitle(locale)+" </a> </li>"+breadCrumbContent/> 105 <#else> 106 <#assign breadCrumbContent = "<li class='breadcrumb-item'><a href='"+categoryUrl+"'>"+categoryAncestor.getTitle(locale)+" </a> </li>"+breadCrumbContent/> 107 </#if> 108 </#if> 109 </#if> 110 </#foreach> 111 112 ${breadCrumbContent} 113 114 </#if> 115 116 <#assign hideCategory = false/> 117 <#if assetCategoryPropertyService.getCategoryProperty(category.getCategoryId(),"idContenido") ? has_content > 118 <#assign contentIdProperty = assetCategoryPropertyService.getCategoryProperty(category.getCategoryId(),"idContenido")/> 119 <#assign contentId = contentIdProperty.getValue()/> 120 <#if contentId ? has_content> 121 <#assign journalArticleSub = journalArticleService.getLatestArticle(groupId,contentId)/> 122 123 <#if journalArticleSub?has_content> 124 <#-- obtener el contenido de la categoría actual --> 125 <#assign document = SAXReaderUtil.read(journalArticleSub.getContentByLocale(locale)) 126 pageDetailNode = document.selectSingleNode("/root/dynamic-element[@name='paginaDetalle']/dynamic-content") 127 /> 128 <#if document.selectSingleNode("/root/dynamic-element[@name='visibleMigas']/dynamic-content")?has_content> 129 <#assign visibleMigasNode = document.selectSingleNode("/root/dynamic-element[@name='visibleMigas']/dynamic-content") 130 visibleMigas = visibleMigasNode.getText() 131 hideCategory = visibleMigas != "1"/> 132 </#if> 133 </#if> 134 </#if> 135 136 137 <#if pageDetailNode?has_content && pageDetailNode.getText()?has_content> 138 <#assign pageDetail = pageDetailNode.getText()/> 139 <#if (pageDetail?index_of("@")>0)> 140 <#assign pageDetailPosition = (pageDetail?index_of("@")-1) 141 pageDetail = pageDetail[0..pageDetailPosition] 142 layoutDetail = layoutLocalService.getLayout(themeDisplay.getScopeGroupId(),false,pageDetail?number) 143 /> 144 </#if> 145 <#else> 146 <#if category.isRootCategory()> 147 <#assign detailPage = "inicio"/> 148 <#else> 149 <#assign detailPage = "general"/> 150 </#if> 151 152 <#assign layoutDetail = layoutLocalService.getFriendlyURLLayout(themeDisplay.getScopeGroupId(), false, "/"+detailPage) /> 153 </#if> 154 155 <#assign categoryUrl = PortletURLFactoryUtil.create(request, "com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet", layoutDetail.getPlid(), PortletRequest.RENDER_PHASE) /> 156 ${categoryUrl.setParameter("categoryId",category.getCategoryId()+"")} 157 158 <#if !(hideCategory?has_content && hideCategory)> 159 <#if category.isRootCategory()> 160 <#if title?has_content> 161 <li class="breadcrumb-item"><a href="/inicio">${category.getTitle(locale)}</a></li> 162 <#else> 163 <li class="breadcrumb-item active">${category.getTitle(locale)}</li> 164 </#if> 165 <#else> 166 <#if title?has_content> 167 <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> 168 <#else> 169 <li class="breadcrumb-item active">${category.getTitle(locale)}</li> 170 </#if> 171 </#if> 172 </#if> 173 </#if> 174 </#if> 175 <#if title ? has_content> 176 <li class="breadcrumb-item active">${title}</li> 177 </#if> 178 </ol> 179</nav> 180 181<script type="text/javascript"> 182 $( document ).ready(function() { 183 if(typeof ga !== "undefined") { 184 <#if title ? has_content> 185 var pageName = '${title}'; 186 <#elseif category ? has_content> 187 var pageName = '${category.getName()}'; 188 <#else> 189 var pageName = location.pathname; 190 </#if> 191 ga( 'send', 'pageview', { 192 'page': pageName, 193 'title': pageName 194 } ); 195 } 196 }); 197</script> Publicador de contenidos
Publicaciones
-
Atlas de las mariposas diurnas de Asturias (Lepidoptera: Rhopalocera)
2025Mortera, H. y Álvarez Laó, C. 2025. Atlas de las mariposas diurnas de Asturias (Lepidoptera: Rhopalocera). Naturalia Cantabricae 13(3): 71-114 -
Catálogo de prescripciones técnicas ecológicas
2025MINISTERIO DE HACIENDA // MINISTERIO PARA LA TRANSICIÓN ECOLÓGICA Y EL RETO DEMOGRÁFICO Edita: © SUBSECRETARÍA Gabinete Técnico -
Estado y caracterización de las poblaciones de salmón atlántico (Salmo salar) en los ríos de Asturias (España): Indicadores poblacionales y esfuerzo de pesca
2025Jerónimo de la Hoz; Cristina Maseda , Daniel González-Nuevo , José Sánchez , Hugo Mortera // Sección de Pesca Fluvial, Gobierno del Principado de Asturias, EASMU, c/Antonio Suárez Gutiérrez, nº2, 33005, Oviedo -
Flora del Cantábrico: una visión glocal
2025Naturalia Cantabricae 13(2): 39-69. -
Recopilatorio de Guía de Recursos de Educación Ambiental (2022-2025)
2025CENEAM -
Normas UNE de apoyo a la economía circular
2025UNE NORMALIZACIÓN ESPAÑOLA -
Restauración ecológica: ejemplos de bases técnicas y soluciones prácticas
2025Fundación Biodiversidad -
Cartografía cotos Salmoneros del Principado de Asturias 2024
2024Gobierno del Principado de Asturias -
Cartografía de cotos trucheros del Principado de Asturias 2024
2024Gobierno del Principado de Asturias -
Elaboración de Escenarios de Cambio Climático de Alta Resolución sobre el Principado de Asturias
2024Fernando G. Taboada (Universidad de Oviedo) , Sixto Herrera García (Universidad de Cantabria)
