Se ha producido un error al procesar la plantilla.
Java method "com.sun.proxy.$Proxy114.getLayout(long)" threw an exception when invoked on com.sun.proxy.$Proxy114 object "com.liferay.layout.internal.service.LayoutLocalServiceWrapper@753046f0"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign parentLayout = layoutLocalSer...  [in template "42020#42061#121889024" at line 89, column 25]
----
1<#--CONFIGURAR EL NAVIGATION MENU PARA QUE MUESTRE EL MENÚ DE LA PÁGINA PADRE A LA ACTUAL --> 
2<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
3<#if entries?has_content> 
4	<div class="inner-page__header"> 
5		<div class="row mx-0"> 
6			<div class="col-sm-6 px-0"> 
7				<div class="inner-page__header-subnavigation"> 
8					<#-- Obtengo la página actual y la padre de la actual --> 
9					<#list entries as navigationEntry> 
10						<#if navigationEntry.isSelected()> 
11							<#assign currentEntry = navigationEntry> 
12							<#-- Obtengo toda la lista de ancestros del nodo y la recorro en reverse, la raiz primero --> 
13							<#list currentEntry.getLayout().getAncestors()?reverse as itemLayout> <#-- Tipo Layout --> 
14								<#if itemLayout?index == 0><#-- Este es título superior de la página correspoondiente al nivel 1--> 
15									<p class="inner-page__header-parent">${itemLayout.getName(locale)}</p> 
16								<#elseif itemLayout?index == 1><#-- Este es el título principal de la página nivel 2, correspondiente al segundo nivel, está también más abajo --> 
17									<p class="inner-page__header-title js-toggle-subnavigation">${itemLayout.getName(locale)}</p> 
18								<#elseif itemLayout?index == 2> 
19									<#assign third = itemLayout> 
20								</#if> 
21								<#if itemLayout?index == 1 && itemLayout.getParentPlid()??  || currentEntry.getLayout().getAncestors()?size == 1> 
22									<#if currentEntry.getLayout().getAncestors()?size == 1> 
23										<#assign parentLayout = layoutLocalService.getLayout(currentEntry.getLayout().getParentPlid())> 
24										<#-- Este es el título principal de la página, correspondiente al segundo nivel, está también más abajo --> 
25										<#-- Si el entry seleccionado coincide con este nivel se pintará aquí, en vez de arriba --> 
26										<p class="inner-page__header-title js-toggle-subnavigation">${currentEntry.getLayout().getName(locale)}</p> 
27									<#else> 
28										<#assign parentLayout = layoutLocalService.getLayout(itemLayout.getParentPlid())> 
29									</#if> 
30									<#if parentLayout.hasChildren()> 
31										<#-- Lista de enlaces hermanos del nivel 2 --> 
32										<ul class="subnavigation"> 
33											<#list parentLayout.getChildren() as childrenLayout> 
34												<#if currentEntry.getLayout().getPlid() != childrenLayout.getPlid() && !childrenLayout.isChildSelected(true, currentEntry.getLayout())> 
35													<#if !childrenLayout.getLayoutType().isBrowsable() && childrenLayout.hasChildren() > 
36														<li><a href="${getUrlPageSet(childrenLayout)}" data-senna-off="true">${childrenLayout.getName(locale)}</a></li> 
37													<#else> 
38														<li><a href="${getFriendlyURL(childrenLayout)}" data-senna-off="true">${childrenLayout.getName(locale)}</a></li> 
39													</#if> 
40												</#if> 
41											</#list> 
42										</ul> 
43									</#if> 
44								</#if> 
45							</#list> 
46						</#if> 
47					</#list> 
48				</div> 
49			</div> 
50			<div class="col-sm-6 px-0"> 
51				<div class="inner-page__header-image"> 
52					<#assign hashPreferences = {"displayStyle":"full-content", 
53												"enableRelatedAssets":"false", 
54												"enableRss":"false", 
55												"enableRatings":"false", 
56												"showMetadataDescriptions":"false", 
57												"enableFlags":"false", 
58												"showAddContentButton":"false", 
59												"subtypeFieldsFilterEnabledDLFileEntryAssetRendererFactory":"false", 
60												"showExtraInfo":"false", 
61												"showOnlyLayoutAssets":"false", 
62												"enableSocialBookmarks":"false", 
63												"showContextLink":"false", 
64												"enableCommentRatings":"false", 
65												"enablePrint":"false", 
66												"showAssetTitle":"false", 
67												"delta":1}/> 
68					<#assign preferences = freeMarkerPortletPreferences.getPreferences(hashPreferences) /> 
69					<@liferay_portlet["runtime"] 
70						defaultPreferences="${preferences}" 
71						portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet" 
72						instanceId="cabecera_imagen_prueba_4_${themeDisplay.getPortletDisplay().getInstanceId()}" 
73					/> 
74 
75				</div> 
76			</div> 
77		</div> 
78 
79		<#-- Cuando hay 4 niveles, se guarda la referencia de ancestro en la variable third para pintarla aquí --> 
80		<#if third??> 
81			<#assign currentLayout = third> 
82			<#assign parentLayout = layoutLocalService.getLayout(currentLayout.getParentPlid())> 
83			<@printChildrens parentLayout, currentLayout > </@printChildrens> 
84		</#if> 
85 
86		<#-- Siempre que haya más de 3 niveles o más, se pinta el elemento actual con sus hermanos.--> 
87		<#if currentEntry??> 
88			<#assign currentLayout = currentEntry.getLayout()> 
89			<#assign parentLayout = layoutLocalService.getLayout(currentLayout.getParentPlid())> 
90			<@printChildrens parentLayout, currentLayout > </@printChildrens> 
91 
92			<#-- Se pinta los hijos porque puede que el padre sea una página en sí --> 
93			<#if currentEntry.hasChildren()> 
94				<#assign currentLayout = currentEntry.getLayout()/> 
95				<#assign parentLayout = currentEntry.getLayout()> 
96				<@printChildrens parentLayout, currentLayout > </@printChildrens> 
97			</#if> 
98		</#if> 
99	</div> 
100 
101</#if> 
102 
103<#macro printChildrens parentLayout, currentLayout> 
104	<#if parentLayout.hasChildren() && currentEntry.getLayout().getAncestors()?size gt 1> 
105		<div class="inner-page__menu"> 
106			<div class="container"> 
107				<div class="col-sm-12 px-0"> 
108					<#assign childSelected = layout.getName(locale) /> 
109					<#list parentLayout.getChildren() as childrenLayout> 
110						<#if currentLayout.getPlid() == childrenLayout.getPlid()> 
111							<#assign childSelected = childrenLayout.getName(locale) /> 
112						</#if> 
113					</#list> 
114 
115					<p class="subnavigation-button js-toggle-subnavigation2">${childSelected}</p> 
116					<div class="inner-page__navigation subnavigation2"> 
117						<#list parentLayout.getChildren() as childrenLayout> 
118							<#if !childrenLayout.isHidden() > 
119								<#-- Pinta uno u otro dependiendo con class active si es el seleccionado o externo si el enlace es a fuera--> 
120								<#if currentLayout.getPlid() != childrenLayout.getPlid()> 
121									<#if childrenLayout.isTypeURL()> 
122										<a href="${getFriendlyURL(childrenLayout)}" class="extern" target="_blank" >${childrenLayout.getName(locale)}</a> 
123									<#elseif childrenLayout.isTypeLinkToLayout() > 
124										<a href="${getFriendlyURL(childrenLayout.getLinkedToLayout())}" class="">${childrenLayout.getName(locale)}</a> 
125									<#elseif !childrenLayout.getLayoutType().isBrowsable() && childrenLayout.hasChildren() > 
126										<a href="${getUrlPageSet(childrenLayout)}" class="">${childrenLayout.getName(locale)}</a> 
127									<#else> 
128										<a href="${getFriendlyURL(childrenLayout)}" class="">${childrenLayout.getName(locale)}</a> 
129									</#if> 
130								<#else><#-- Este es el activo --> 
131									<#if !childrenLayout.getLayoutType().isBrowsable() && childrenLayout.hasChildren() > 
132										<a href="${getUrlPageSet(childrenLayout)}" class="active hidden-xs">${childrenLayout.getName(locale)}</a> 
133									<#else> 
134										<a href="${getFriendlyURL(childrenLayout)}" class="active hidden-xs">${childrenLayout.getName(locale)}</a> 
135									</#if> 
136								</#if> 
137							</#if> 
138						</#list> 
139					</div> 
140				</div> 
141			</div> 
142		</div> 
143	</#if> 
144</#macro> 
145 
146 
147<#function getFriendlyURL layout> 
148	<#if portalUtil.getLayoutFriendlyURL(layout, themeDisplay)?? > 
149		<#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay) /> 
150	<#else> 
151		<#-- Para páginas de tipo agrupador, se genera la URL de forma manual --> 
152		<#return themeDisplay.getScopeGroup().getPathFriendlyURL(false,themeDisplay) + themeDisplay.getSiteGroup().getFriendlyURL() + layout.getFriendlyURL(locale) /> 
153	</#if> 
154</#function> 
155 
156 
157<#function getUrlPageSet layout> 
158	<#-- Se mira 2 niveles --> 
159	<#assign item = layout.getChildren()?first /> 
160 
161	<#if !item.getLayoutType().isBrowsable() && item.hasChildren()> 
162		<#assign item = item.getChildren()?first /> 
163	</#if> 
164 
165	<#return getFriendlyURL(item)> 
166</#function> 
Se ha producido un error al procesar la plantilla.
Java method "com.sun.proxy.$Proxy114.getLayout(long)" threw an exception when invoked on com.sun.proxy.$Proxy114 object "com.liferay.layout.internal.service.LayoutLocalServiceWrapper@753046f0"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign parentLayout = layoutLocalSer...  [in template "42020#42061#121889024" at line 89, column 25]
----
1<#--CONFIGURAR EL NAVIGATION MENU PARA QUE MUESTRE EL MENÚ DE LA PÁGINA PADRE A LA ACTUAL --> 
2<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
3<#if entries?has_content> 
4	<div class="inner-page__header"> 
5		<div class="row mx-0"> 
6			<div class="col-sm-6 px-0"> 
7				<div class="inner-page__header-subnavigation"> 
8					<#-- Obtengo la página actual y la padre de la actual --> 
9					<#list entries as navigationEntry> 
10						<#if navigationEntry.isSelected()> 
11							<#assign currentEntry = navigationEntry> 
12							<#-- Obtengo toda la lista de ancestros del nodo y la recorro en reverse, la raiz primero --> 
13							<#list currentEntry.getLayout().getAncestors()?reverse as itemLayout> <#-- Tipo Layout --> 
14								<#if itemLayout?index == 0><#-- Este es título superior de la página correspoondiente al nivel 1--> 
15									<p class="inner-page__header-parent">${itemLayout.getName(locale)}</p> 
16								<#elseif itemLayout?index == 1><#-- Este es el título principal de la página nivel 2, correspondiente al segundo nivel, está también más abajo --> 
17									<p class="inner-page__header-title js-toggle-subnavigation">${itemLayout.getName(locale)}</p> 
18								<#elseif itemLayout?index == 2> 
19									<#assign third = itemLayout> 
20								</#if> 
21								<#if itemLayout?index == 1 && itemLayout.getParentPlid()??  || currentEntry.getLayout().getAncestors()?size == 1> 
22									<#if currentEntry.getLayout().getAncestors()?size == 1> 
23										<#assign parentLayout = layoutLocalService.getLayout(currentEntry.getLayout().getParentPlid())> 
24										<#-- Este es el título principal de la página, correspondiente al segundo nivel, está también más abajo --> 
25										<#-- Si el entry seleccionado coincide con este nivel se pintará aquí, en vez de arriba --> 
26										<p class="inner-page__header-title js-toggle-subnavigation">${currentEntry.getLayout().getName(locale)}</p> 
27									<#else> 
28										<#assign parentLayout = layoutLocalService.getLayout(itemLayout.getParentPlid())> 
29									</#if> 
30									<#if parentLayout.hasChildren()> 
31										<#-- Lista de enlaces hermanos del nivel 2 --> 
32										<ul class="subnavigation"> 
33											<#list parentLayout.getChildren() as childrenLayout> 
34												<#if currentEntry.getLayout().getPlid() != childrenLayout.getPlid() && !childrenLayout.isChildSelected(true, currentEntry.getLayout())> 
35													<#if !childrenLayout.getLayoutType().isBrowsable() && childrenLayout.hasChildren() > 
36														<li><a href="${getUrlPageSet(childrenLayout)}" data-senna-off="true">${childrenLayout.getName(locale)}</a></li> 
37													<#else> 
38														<li><a href="${getFriendlyURL(childrenLayout)}" data-senna-off="true">${childrenLayout.getName(locale)}</a></li> 
39													</#if> 
40												</#if> 
41											</#list> 
42										</ul> 
43									</#if> 
44								</#if> 
45							</#list> 
46						</#if> 
47					</#list> 
48				</div> 
49			</div> 
50			<div class="col-sm-6 px-0"> 
51				<div class="inner-page__header-image"> 
52					<#assign hashPreferences = {"displayStyle":"full-content", 
53												"enableRelatedAssets":"false", 
54												"enableRss":"false", 
55												"enableRatings":"false", 
56												"showMetadataDescriptions":"false", 
57												"enableFlags":"false", 
58												"showAddContentButton":"false", 
59												"subtypeFieldsFilterEnabledDLFileEntryAssetRendererFactory":"false", 
60												"showExtraInfo":"false", 
61												"showOnlyLayoutAssets":"false", 
62												"enableSocialBookmarks":"false", 
63												"showContextLink":"false", 
64												"enableCommentRatings":"false", 
65												"enablePrint":"false", 
66												"showAssetTitle":"false", 
67												"delta":1}/> 
68					<#assign preferences = freeMarkerPortletPreferences.getPreferences(hashPreferences) /> 
69					<@liferay_portlet["runtime"] 
70						defaultPreferences="${preferences}" 
71						portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet" 
72						instanceId="cabecera_imagen_prueba_4_${themeDisplay.getPortletDisplay().getInstanceId()}" 
73					/> 
74 
75				</div> 
76			</div> 
77		</div> 
78 
79		<#-- Cuando hay 4 niveles, se guarda la referencia de ancestro en la variable third para pintarla aquí --> 
80		<#if third??> 
81			<#assign currentLayout = third> 
82			<#assign parentLayout = layoutLocalService.getLayout(currentLayout.getParentPlid())> 
83			<@printChildrens parentLayout, currentLayout > </@printChildrens> 
84		</#if> 
85 
86		<#-- Siempre que haya más de 3 niveles o más, se pinta el elemento actual con sus hermanos.--> 
87		<#if currentEntry??> 
88			<#assign currentLayout = currentEntry.getLayout()> 
89			<#assign parentLayout = layoutLocalService.getLayout(currentLayout.getParentPlid())> 
90			<@printChildrens parentLayout, currentLayout > </@printChildrens> 
91 
92			<#-- Se pinta los hijos porque puede que el padre sea una página en sí --> 
93			<#if currentEntry.hasChildren()> 
94				<#assign currentLayout = currentEntry.getLayout()/> 
95				<#assign parentLayout = currentEntry.getLayout()> 
96				<@printChildrens parentLayout, currentLayout > </@printChildrens> 
97			</#if> 
98		</#if> 
99	</div> 
100 
101</#if> 
102 
103<#macro printChildrens parentLayout, currentLayout> 
104	<#if parentLayout.hasChildren() && currentEntry.getLayout().getAncestors()?size gt 1> 
105		<div class="inner-page__menu"> 
106			<div class="container"> 
107				<div class="col-sm-12 px-0"> 
108					<#assign childSelected = layout.getName(locale) /> 
109					<#list parentLayout.getChildren() as childrenLayout> 
110						<#if currentLayout.getPlid() == childrenLayout.getPlid()> 
111							<#assign childSelected = childrenLayout.getName(locale) /> 
112						</#if> 
113					</#list> 
114 
115					<p class="subnavigation-button js-toggle-subnavigation2">${childSelected}</p> 
116					<div class="inner-page__navigation subnavigation2"> 
117						<#list parentLayout.getChildren() as childrenLayout> 
118							<#if !childrenLayout.isHidden() > 
119								<#-- Pinta uno u otro dependiendo con class active si es el seleccionado o externo si el enlace es a fuera--> 
120								<#if currentLayout.getPlid() != childrenLayout.getPlid()> 
121									<#if childrenLayout.isTypeURL()> 
122										<a href="${getFriendlyURL(childrenLayout)}" class="extern" target="_blank" >${childrenLayout.getName(locale)}</a> 
123									<#elseif childrenLayout.isTypeLinkToLayout() > 
124										<a href="${getFriendlyURL(childrenLayout.getLinkedToLayout())}" class="">${childrenLayout.getName(locale)}</a> 
125									<#elseif !childrenLayout.getLayoutType().isBrowsable() && childrenLayout.hasChildren() > 
126										<a href="${getUrlPageSet(childrenLayout)}" class="">${childrenLayout.getName(locale)}</a> 
127									<#else> 
128										<a href="${getFriendlyURL(childrenLayout)}" class="">${childrenLayout.getName(locale)}</a> 
129									</#if> 
130								<#else><#-- Este es el activo --> 
131									<#if !childrenLayout.getLayoutType().isBrowsable() && childrenLayout.hasChildren() > 
132										<a href="${getUrlPageSet(childrenLayout)}" class="active hidden-xs">${childrenLayout.getName(locale)}</a> 
133									<#else> 
134										<a href="${getFriendlyURL(childrenLayout)}" class="active hidden-xs">${childrenLayout.getName(locale)}</a> 
135									</#if> 
136								</#if> 
137							</#if> 
138						</#list> 
139					</div> 
140				</div> 
141			</div> 
142		</div> 
143	</#if> 
144</#macro> 
145 
146 
147<#function getFriendlyURL layout> 
148	<#if portalUtil.getLayoutFriendlyURL(layout, themeDisplay)?? > 
149		<#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay) /> 
150	<#else> 
151		<#-- Para páginas de tipo agrupador, se genera la URL de forma manual --> 
152		<#return themeDisplay.getScopeGroup().getPathFriendlyURL(false,themeDisplay) + themeDisplay.getSiteGroup().getFriendlyURL() + layout.getFriendlyURL(locale) /> 
153	</#if> 
154</#function> 
155 
156 
157<#function getUrlPageSet layout> 
158	<#-- Se mira 2 niveles --> 
159	<#assign item = layout.getChildren()?first /> 
160 
161	<#if !item.getLayoutType().isBrowsable() && item.hasChildren()> 
162		<#assign item = item.getChildren()?first /> 
163	</#if> 
164 
165	<#return getFriendlyURL(item)> 
166</#function> 

Utilizamos cookies propias y de terceros para fines analíticos. Clica AQUÍ para más información. Puedes aceptar todas las cookies pulsando el botón "Aceptar" o configurarlas o rechazar su uso clicando.

Declaración de cookies

Estas cookies son necesarias para que el sitio web funcione y no se pueden desactivar en nuestros sistemas. Estas cookies no guardan ninguna información personal identificable.

Nombre Proveedor Propósito Caducidad Tipo
LFR_Sesión_STATE_* Liferay Administra la sesión como usuario registrado Session HTTP
GUEST_LANGUAGE_ID Liferay Determina el idioma con el que accede, para mostrar el mismo en la próxima sesión 1 year HTTP
ANONYMOUS_USER_ID Liferay Administra la sesión como usuario no registrado 1 year HTTP
COOKIE_SUPPORT Liferay Identifica que es necesario el uso de cookies para el funcionamiento del portal 1 year HTTP
JSesiónID Liferay Administra el inicio de sesión e indica que está usando el sitio Session HTTP
SACYRGDPR Sacyr Utilizada para gestionar la política de cookies Session HTTP

Estas cookies nos permiten contar las visitas y fuentes de circulación para poder medir y mejorar el desempeño de nuestro sitio. Nos ayudan a saber qué páginas son las más o menos populares, y ver cuántas personas visitan el sitio. Toda la información que recogen estas cookies es agregada y, por lo tanto, anónima.

Nombre Proveedor Propósito Caducidad Tipo
_gat Google Se utiliza con fines estadísticos y analíticos para aumentar el rendimiento de nuespos Servicios Session HTTP
_gid Google Se utiliza para almacenar y actualizar un valor único para cada página visitada Session HTTP
_ga Google Se utiliza con fines estadísticos y analíticos para aumentar el rendimiento de nuespos Servicio Session HTTP