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>