Editar imagen banner principal
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> serviceLocator.findService("com.liferay.portal.kernel.util.HtmlUtil")  [in template "20192#20219#55789460" at line 7, column 21]

----
Tip: If the failing expression is known to 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 htmlUtil = serviceLocator.fin...  [in template "20192#20219#55789460" at line 7, column 1]
----
1<#assign blogsEntryLocalService = serviceLocator.findService("com.liferay.blogs.service.BlogsEntryLocalService")/> 
2<#assign layout = themeDisplay.getLayout()> 
3<#assign className = layout.getModelClassName()> 
4<#assign classPK = layout.getPlid()> 
5<#assign AssetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")> 
6<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
7<#assign htmlUtil = serviceLocator.findService("com.liferay.portal.kernel.util.HtmlUtil") /> 
8<#assign currentURL = themeDisplay.getURLCurrent()> 
9<#assign URLDecoder = staticUtil["java.net.URLDecoder"] /> 
10<#assign tagURL = URLDecoder.decode(currentURL, "UTF-8") /> 
11<#assign startIndex = currentURL?index_of("/tag/")> 
12<#if startIndex != -1> 
13    <#assign tagSelected = tagURL?substring(startIndex + 5)> 
14<#else> 
15    <#assign tagSelected = ""> 
16</#if> 
17 
18<style> 
19#p_p_id${renderResponse.getNamespace()} .portlet-title-text { display:none;} 
20 
21 
22	@media(max-width:1150px){ 
23	 
24		.lista-d-etiquetas { 
25			display:inline !important; 
26			 
27
28	 
29
30     .nube{ 
31       background-color: white; 
32   }    
33     
34     
35				.lista-d-etiquetas { 
36		            text-align:center; 
37		                align-items: center !important; 
38						justify-content: center !important; 
39    					display: inline-flex; 
40    					padding-bottom:0px; 
41    					list-style:none; 
42    					width:100%; 
43    					 li.etiqueta{ 
44		                color: #485156; 
45		            font-family: "Avenir LT Std"; 
46		            font-size: 16px; 
47		            font-style: normal; 
48		            font-weight: 400; 
49		            text-decoration-line: underline; 
50		            padding:30px 35px 30px 0px; 
51		            min-width: fit-content; 
52		                a{ 
53		                    padding: 15px 20px 15px 20px; 
54		                    color:#485156 !important; 
55		                     
56
57		                a.tag-selected{ 
58		                        background-color:#ffd100; 
59		                        color:#485156 !important; 
60
61   
62	             
63
64
65				 
66/****ESTILOS GENERALES PARA LA NUBE ETIQUETAS Y FOOTER*******/ 
67.page-blog .container-fluid #content #main-content .bg-:nth-last-child(-n+2){ 
68	background-color:white; 
69	margin: 0 -15px; 
70		height:50px; 
71
72	@media(max-width:1150px){ 
73	    .page-blog .container-fluid #content #main-content .bg-:nth-last-child(-n+2){ 
74        height:fit-content; 
75
76
77 
78 
79.page-blog .container-fluid #content #main-content .bg- .py-3{ 
80    padding-top:unset !important; 
81    padding-bottom:unset !important; 
82
83 .portlet-layout .portlet-header{ 
84    margin-bottom:unset !important; 
85
86 
87</style> 
88 
89<section class="nube"> 
90            <#if entries?has_content> 
91                <ul class ="lista-d-etiquetas" > 
92	            <#list entries as curTag> 
93                    <#assign tagURL = "/blog/-/tag/" + htmlUtil.escapeURL(curTag.name)/> 
94	                <li class ="etiqueta">  
95	                <#if tagSelected == curTag.name> 
96                        <a class ="tag-selected" href=${tagURL} onclick="addclass(this)"> 
97                        <i aria-hidden="true">#</i>${curTag.name}</a> 
98	                <#else> 
99                        <a href=${tagURL} onclick="addclass(this)"> 
100                        <i aria-hidden="true">#</i>${curTag.name}</a> 
101		            </#if> 
102		            </li>  
103	            </#list> 
104	            </ul> 
105            </#if> 
106</section> 
107 
108<script> 
109// Función para añadir la clase 'tag-selected' a los elementos que cumplan con la condición 
110function applyTagSelected() { 
111    var a = document.getElementsByTagName('a'); 
112    var tagSelectedDecoded = decodeURL("${tagSelected}"); 
113    for (i = 0; i < a.length; i++) { 
114        var tagName = a[i].getAttribute('data-tag-name'); 
115        console.log("tagSelectedDecoded:", tagSelectedDecoded); 
116        console.log("tag:", tagName); 
117        if (tagName === tagSelectedDecoded) { 
118            a[i].classList.add('tag-selected'); 
119
120
121
122 
123// Función para decodificar la URL codificada 
124function decodeURL(url) { 
125    return decodeURIComponent(url.replace(/\+/g, ' ')); 
126
127 
128window.addEventListener("load", function() { 
129    applyTagSelected(); 
130}); 
131</script>