Centro Cultural de Santiago
Contenidos con CCE Categorias Ciudadanía / Comunidad .
Se ha producido un error al procesar la plantilla.
Failed to "?eval" string with this error: ---begin-message--- Syntax error in ?eval-ed string in line 1, column 61: Lexical error: encountered "u" (117), after "\"PERISCOPIO INVIERNO \\". ---end-message--- The failing expression: ==> imgGS?eval [in template "20096#20122#7822989" at line 107, column 46] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign imgUuidGS = imgGS?eval.uuid!"" [in template "20096#20122#7822989" at line 107, column 25] ----
1<!-- AECID-CC-Listado-Recomendaciones -->
2
3<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
5<#assign journalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") />
6<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
7<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
8
9<#assign publicPath = themeDisplay.getPathFriendlyURLPublic() />
10<#assign siteFriendlyURL = themeDisplay.getSiteGroup().getFriendlyURL() />
11
12<#-- ID del vocabulario global (cambia esto por el ID real) -->
13<#assign vocabularyId = 7623391 />
14
15<style>
16.lfr-pagination, .taglib-categorization-filter {
17 max-width: 1260px;
18 margin: 1.5rem auto;
19 align-items: center;
20 display: flex;
21 padding: 0 1rem;
22}
23
24.aecid-main .cat-Accesibilidad {background-color: #09861e;}
25.aecid-main .cat-Artes {background-color: #f5bce9;}
26.aecid-main .cat-Ciencia {background-color: #034ea2;}
27.aecid-main .cat-Cine {background-color: #540081;}
28.aecid-main .cat-Ciudadania {background-color: #33b6ba;}
29.aecid-main .cat-Cultura {background-color: #7d2721;}
30.aecid-main .cat-Debate {background-color: #8f98dc;}
31.aecid-main .cat-Diversidad {background-color: #ca09f1;}
32.aecid-main .cat-Escenicas {background-color: #f5c109;}
33.aecid-main .cat-Examenes {background-color: #ec0909;}
34.aecid-main .cat-Exposiciones {background-color: #000000;}
35.aecid-main .cat-Formacion {background-color: #e01451;}
36.aecid-main .cat-Infantil {background-color: #a4cb22;}
37.aecid-main .cat-Letras {background-color: #f39918;}
38.aecid-main .cat-Mediacion {background-color: #e5de8a;}
39.aecid-main .cat-Medioambiente {background-color: #3ec11a;}
40.aecid-main .cat-Musica {background-color: #4fc0fd;}
41.aecid-main .cat-Patrimonio {background-color: #d12929;}
42.aecid-main .cat-Radio {background-color: #f462d4;}
43
44@media (min-width: 576px) {
45 .lfr-pagination, .taglib-categorization-filter {
46 max-width: 540px;
47 padding: 0;
48 }
49}
50@media (min-width: 768px) {
51 .lfr-pagination, .taglib-categorization-filter {
52 max-width: 720px;
53 }
54}
55@media (min-width: 992px) {
56 .lfr-pagination, .taglib-categorization-filter {
57 max-width: 960px;
58 }
59}
60@media (min-width: 1200px) {
61 .lfr-pagination, .taglib-categorization-filter {
62 max-width: 1180px;
63 }
64}
65@media (min-width: 1440px) {
66 .lfr-pagination, .taglib-categorization-filter {
67 max-width: 1260px;
68 }
69}
70@media (min-width: 992px) {
71 .lfr-pagination .lfr-pagination-buttons {
72 gap: 1rem;
73 margin-left: auto;
74 }
75}
76.taglib-categorization-filter em {
77 margin-left: 1rem;
78 }
79</style>
80
81<#if entries?has_content>
82 <div class="fd-gris-fondo py-50 py-lg-100 cont-convo">
83 <div class="container px-3 px-lg-0">
84 <div class="content-cards cols-items-4">
85 <#-- Iterar sobre los contenidos obtenidos en la ADT -->
86 <#list entries as curEntry>
87 <#assign
88 curEntry = curEntry
89 renderer = curEntry.getAssetRenderer()
90 entryTitle = htmlUtil.escape(renderer.getTitle(locale))
91 viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, renderer, curEntry, !stringUtil.equals(assetLinkBehavior, "showFullContent"))/>
92 <#assign journalArticle = renderer.getArticle()/>
93 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) />
94 <#assign entryTitle = htmlUtil.escape(renderer.getTitle(locale))/>
95 <#assign entryResumen = htmlUtil.escape(renderer.getSummary())/>
96
97 <#assign fechaIni=document.valueOf("//dynamic-element[@field-reference='startDate']/dynamic-content/text()") />
98 <#assign fechaFin=document.valueOf("//dynamic-element[@field-reference='endDate']/dynamic-content/text()") />
99
100 <#assign imgGS=document.valueOf("//dynamic-element[@field-reference='image']/dynamic-content/text()") />
101 <#assign imgUuidGS = "" />
102 <#assign imgNameGS = "" />
103 <#assign imgGroupIdGS = "" />
104 <#assign imgAltGS = "" />
105
106 <#if imgGS?? && imgGS != "" && imgGS?trim != "{}">
107 <#assign imgUuidGS = imgGS?eval.uuid!"" />
108 </#if>
109 <#if imgUuidGS?has_content>
110 <#assign imgNameGS = imgGS?eval.title />
111 <#assign imgGroupIdGS = imgGS?eval.groupId />
112 <#assign imgAltGS = imgGS?eval.alt/>
113
114 <#assign imgAltGS = imgAltGS?replace('"', "'")>
115 <#assign imgAltGS = imgAltGS?replace('/', "-")>
116 <#assign imgAltGS = imgAltGS?replace('<', " ")>
117 <#assign imgAltGS = imgAltGS?replace('>', " ")>
118 <#assign imgAltGS = imgAltGS?replace('&', " ")>
119 </#if>
120
121 <#assign classPK = curEntry.getClassPK() />
122 <#assign assetEntry = assetEntryLocalService.fetchEntry(entry.getClassName(), classPK) />
123 <div class="cardReco h-auto">
124 <div class="h-100 d-flex flex-column justify-content-between">
125 <div class="asset-abstract">
126 <div class="lfr-meta-actions asset-actions">
127 <@getEditIcon />
128 </div>
129 </div>
130
131 <div class="d-flex flex-column h-100 gap-1r position-relative">
132 <div class="p-0">
133 <#if imgUuidGS?has_content>
134 <div class="card-reco-img-container">
135 <img class="w-100" alt="${imgAltGS}" src="/documents/${imgGroupIdGS}/0/${imgNameGS}/${imgUuidGS}" />
136 </div>
137 <#else>
138 <div class="card-reco-img-container">
139 <!--<img class="w-100" alt="imagen de la noticia" src="${themeDisplay.getPathThemeImages()}/icons/svg/default_image.svg" />-->
140 <img class="w-100" alt="Imagen de AECID" src="/documents/d/${themeDisplay.getScopeGroup().getFriendlyURL()}/generica" />
141 </div>
142 </#if>
143 </div>
144
145 <!--<p class="mb-0 txt-h6 txt-lg-h5 mt-4" tabindex="0"><span class="sr-only">${languageUtil.get(locale, "fecha.de.la.noticia")}: </span>${dateUtil.getDate(journalArticle.getDisplayDate(), "dd/MM", locale)}</p>-->
146
147 <div class="fecha-rango">
148 <#if fechaIni?has_content>
149 <#assign startDate_Data = getterUtil.getString(fechaIni)>
150 <#assign endDate_Data = getterUtil.getString(fechaFin)>
151 <#if startDate_Data?? && endDate_Data??>
152 <#assign startDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", startDate_Data, locale)>
153 <#assign endDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", endDate_Data, locale)>
154 <#if startDate_Data == endDate_Data>
155 ${dateUtil.getDate(startDate_DateObj, "dd MMMM yyyy", locale)}
156 <#else>
157 Desde ${dateUtil.getDate(startDate_DateObj, "dd MMMM yyyy", locale)} hasta ${dateUtil.getDate(endDate_DateObj, "dd MMMM yyyy", locale)}
158 </#if>
159 </#if>
160 </#if>
161 </div>
162
163 <div class="card-text-cont">
164 <a class="title elipsis-3 enlace-total" href="${viewURL}" title="Ir a la recomendacion ${entryTitle}">${entryTitle}</a>
165 </div>
166 </div>
167 <div class="d-flex gap-1r flex-wrap mt-3">
168 <#if assetEntry??>
169 <#assign categoryIds = assetEntry.getCategoryIds() />
170
171 <#-- Filtrar categorías que pertenezcan al vocabulario global -->
172 <#assign categories = [] />
173 <#list categoryIds as categoryId>
174 <#assign category = assetCategoryLocalService.fetchAssetCategory(categoryId) />
175 <#if category?? && category.getVocabularyId() == vocabularyId>
176 <#assign categories += [category] />
177 </#if>
178 </#list>
179
180 <#if categories?has_content>
181 <#list categories as category>
182
183 <#assign cat = category.getName() />
184 <#assign portalURL = themeDisplay.portalURL>
185 <#assign currentPageName = themeDisplay.layout.name>
186
187 <!--<#assign siteName = themeDisplay.siteGroupName>
188 <#assign siteName = siteName?replace(" ", "")>
189 <#assign siteName = siteName?lower_case>-->
190 <#assign siteFriendlyURL = themeDisplay.getScopeGroup().getFriendlyURL()>
191 <#-- Esto devuelve algo como "/site-name" -->
192 <#assign siteName = siteFriendlyURL?substring(1)>
193 <!--<p>Site name: ${siteName}</p>-->
194
195 <#assign URLCategoria = portalURL + "/web/" + siteName + "/detalle-categorias/-/categories/" + category.getCategoryId()>
196
197 <#switch cat>
198 <#case "Accesibilidad / Inclusión">
199 <a class="cat-reco cat-Accesibilidad" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
200 <#break>
201 <#case "Artes Visuales">
202 <a class="cat-reco cat-Artes" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
203 <#break>
204 <#case "Ciencia / Tecnología">
205 <a class="cat-reco cat-Ciencia" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
206 <#break>
207 <#case "Cine / Audiovisual">
208 <a class="cat-reco cat-Cine" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
209 <#break>
210 <#case "Ciudadanía / Comunidad">
211 <a class="cat-reco cat-Ciudadania" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
212 <#break>
213 <#case "Cultura para el Desarrollo">
214 <a class="cat-reco cat-Cultura" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
215 <#break>
216 <#case "Debate / Pensamiento">
217 <a class="cat-reco cat-Debate" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
218 <#break>
219 <#case "Diversidad / Géneros">
220 <a class="cat-reco cat-Diversidad" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
221 <#break>
222 <#case "Escénicas">
223 <a class="cat-reco cat-Escenicas" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
224 <#break>
225 <#case "Exámenes de español">
226 <a class="cat-reco cat-Examenes" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
227 <#break>
228 <#case "Exposiciones">
229 <a class="cat-reco cat-Exposiciones" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
230 <#break>
231 <#case "Formación">
232 <a class="cat-reco cat-Formacion" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
233 <#break>
234 <#case "Infantil / Juvenil">
235 <a class="cat-reco cat-Infantil" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
236 <#break>
237 <#case "Letras">
238 <a class="cat-reco cat-Letras" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
239 <#break>
240 <#case "Mediación">
241 <a class="cat-reco cat-Mediacion" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
242 <#break>
243 <#case "Medioambiente / Sostenibilidad">
244 <a class="cat-reco cat-Medioambiente" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
245 <#break>
246 <#case "Música / Sonido">
247 <a class="cat-reco cat-Musica" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
248 <#break>
249 <#case "Patrimonio">
250 <a class="cat-reco cat-Patrimonio" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
251 <#break>
252 <#case "Radio / Pódcast">
253 <a class="cat-reco cat-Radio" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
254 <#break>
255
256 <#default>
257 <a class="cat-reco cat-neg" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
258 <#break>
259 </#switch>
260
261 <!--<li>${category.getName()} (ID: ${category.getCategoryId()})</li>-->
262 </#list>
263 </#if>
264 </#if>
265 </div>
266 </div>
267 </div>
268 </#list>
269 </div>
270 </div>
271 </div>
272</#if>
273
274<#-- CARGA DE LA EDICIÓN EN VENTANA A PARTE -->
275<#macro getEditIcon>
276 <#if renderer.hasEditPermission(themeDisplay.getPermissionChecker())>
277 <#assign editPortletURL = renderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("NORMAL"), themeDisplay.getURLCurrent())!"" />
278 <#if validator.isNotNull(editPortletURL)>
279 <#assign title = languageUtil.format(locale, "edit-x", entryTitle, false) />
280 <@liferay_ui["icon"]
281 cssClass="icon-monospaced visible-interaction text-left"
282 icon="pencil"
283 markupView="lexicon"
284 message=title
285 url=editPortletURL.toString()
286 />
287 </#if>
288 </#if>
289</#macro>
290
291<#macro getFullContent>
292 <#assign pagina = renderer.render(renderRequest, renderResponse, "full_content") />
293 <@liferay_util["include"]
294 page="${pagina}"
295 />
296</#macro>