1<#-- Se inicializa el journalArticleLocalService -->
2<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
3
4<#-- Se obtiene el article id de la noticia actual -->
5<#assign url = themeDisplay.getURLCurrent() />
6
7<#-- Extrae el URL Title de la URL actual -->
8<#assign urlTitle = url?split("/")?last />
9
10<#-- Obtiene el journal article y el article id -->
11<#assign articleActive = journalArticleLocalService.getArticleByUrlTitle(themeDisplay.getScopeGroupId(), urlTitle) />
12<#assign articleIDActive = articleActive.getArticleId() />
13
14<div class="bg-blanco">
15 <div class="container-dx wrapper--noticias__home wrapper--noticias-relacionadas-title">
16 <h2 class="c-secundario-azul-marino m-0">Noticias relacionadas</h2>
17 </div>
18 <div class="container-dx flex-col wrapper--noticias__home wrapper--noticias-relacionadas pt-0">
19 <div class="d-flex content--noticias">
20 <#assign idArticulos = []>
21 <#assign sizeEntries = 0 />
22 <#if entries?has_content>
23 <#assign sizeEntries = entries?size />
24 <#list entries as curEntry>
25 <#assign
26 assetRenderer = curEntry.getAssetRenderer()
27 journalArticle = assetRenderer.getAssetObject()
28 />
29
30 <@liferay_journal["journal-article"]
31 articleId=journalArticle.getArticleId()
32 ddmTemplateKey=journalArticle.getDDMTemplateKey()
33 groupId=journalArticle.getGroupId()
34 />
35 <#assign idArticulos = idArticulos + [journalArticle.getArticleId()]>
36 </#list>
37 </#if>
38 <#assign idArticulos = idArticulos + [articleIDActive]>
39
40
41 <!-- Contenido no relacionado -->
42 <#if sizeEntries < 3 >
43 <#assign sizeEntries = 3 - sizeEntries />
44 <#assign deltaPag=7 />
45
46 <#assign cantTotalItems=0 />
47 <#assign cantTotalPorPag=7 />
48 <#assign paginaRender=1 />
49
50 <#-- Se inicializa el assetEntryQuery -->
51 <#assign aels=serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
52 <#assign assetEntryQuery=objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery") />
53
54 <#-- Recuperar contenido no relacionado -->
55 <#assign groupId = themeDisplay.getScopeGroupId() />
56
57 <#-- Se obtiene valor del Listado de Sitios, configurado en el asset publisher -->
58 <#assign arrayIdSitiosLong=[groupId] />
59 <#assign VOID=assetEntryQuery.setGroupIds(arrayIdSitiosLong)/>
60
61 <#-- Se obtiene ids de structuras que esta configurado en el asset publisher Y se agrega al assetEntryQuery -->
62 <#assign ddmStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")>
63 <#assign structureName = "Distribuidora WP - Noticias - Noticia">
64 <#assign structureId = 1066930>
65 <#assign parentGroupID = themeDisplay.getScopeGroup().getParentGroup().getGroupId() />
66 <#assign structures = ddmStructureLocalService.getStructures(parentGroupID) />
67 <#list structures as structure>
68 <#if structure.getNameCurrentValue() == structureName >
69 <#assign structureId = structure.getStructureId()>
70 <#break>
71 </#if>
72 </#list>
73
74 <#assign arrayIdStructureLong=[structureId] />
75 <#assign VOID=assetEntryQuery.setClassTypeIds(arrayIdStructureLong) />
76
77 <#assign ConfQueryContains0=["false"] />
78 <#assign ConfQueryAndOperator0=["false"] />
79 <#assign ConfQueryValues0=[] />
80
81 <#assign queryContains0=false />
82 <#assign queryAndOperator0=false />
83 <#assign queryValues0String=[] />
84 <#assign queryValues0=[] />
85
86 <#if ConfQueryContains0?has_content && ConfQueryContains0[0]?has_content>
87 <#assign queryContains0=ConfQueryContains0[0]?boolean />
88 </#if>
89 <#if ConfQueryAndOperator0?has_content && ConfQueryAndOperator0[0]?has_content>
90 <#assign queryAndOperator0=ConfQueryAndOperator0[0]?boolean />
91 </#if>
92 <#if ConfQueryValues0?has_content>
93 <#list ConfQueryValues0 as queryValue>
94 <#assign queryValues0String=queryValues0String + [queryValue] />
95 </#list>
96 </#if>
97 <#if queryValues0String?has_content>
98 <#assign atsl=serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService") />
99 <#assign groupId = themeDisplay.getScopeGroupId() />
100 <#assign queryValues0=atsl.getTagIds(groupId, queryValues0String) />
101 </#if>
102
103 <#-- Se inicializa parametros de busqueda -->
104 <#-- TODO: Obtener el valor 'publishDate' desde las configuraciones del assets publisher -->
105 <#assign VOID=assetEntryQuery.setKeywords("") />
106 <#assign VOID=assetEntryQuery.setStart(0) />
107 <#-- En caso de existir mas de 9999 journals, este valor debe aumentar -->
108 <#assign VOID=assetEntryQuery.setEnd(7) />
109 <#assign VOID=assetEntryQuery.setOrderByCol1("priority") />
110 <#assign VOID=assetEntryQuery.setOrderByCol2("publishDate") />
111
112 <#if queryContains0 && queryAndOperator0>
113 <#assign VOID=assetEntryQuery.setAllTagIds(queryValues0) />
114 <#elseif queryContains0 && !queryAndOperator0>
115 <#assign VOID=assetEntryQuery.setAnyTagIds(queryValues0) />
116 <#elseif !queryContains0 && queryAndOperator0>
117 <#assign VOID=assetEntryQuery.setNotAllTagIds(queryValues0) />
118 <#else>
119 <#assign VOID=assetEntryQuery.setNotAnyTagIds(queryValues0) />
120 </#if>
121
122 <#-- Se realiza una busqueda completa de todos los journal del filtro para sacar el total de paginas -->
123 <#assign entriesTotales=aels.getEntries(assetEntryQuery) />
124 <#assign VOID=assetEntryQuery.setStart(0) />
125 <#assign VOID=assetEntryQuery.setEnd(7) />
126
127 <#-- En caso de querer visualizar una pagina en especifico, se inicializan los valores del assetEntryQuery -->
128 <#if (paginaRender?number> 0)>
129 <#assign pagValorInicio=(paginaRender?number-1)*cantTotalPorPag />
130 <#assign pagValorFinal=(paginaRender?number)*cantTotalPorPag />
131 <#assign VOID=assetEntryQuery.setStart(pagValorInicio) />
132 <#assign VOID=assetEntryQuery.setEnd(pagValorFinal) />
133 </#if>
134
135 <#-- Se realiza la consulta de items a mostrar, si se visualiza una pagina especifca -->
136 <#-- solo se muestran los items de la pagina -->
137 <#assign entries=aels.getEntries(assetEntryQuery) />
138 <#assign cantTotalItems=cantTotalItems + entriesTotales?size />
139
140 <#if entries?has_content>
141 <#list entries as curEntry>
142 <#if sizeEntries == 0 >
143 <#break>
144 </#if>
145 <#assign claseDestacada = "" />
146 <#if curEntry.getTags()?has_content >
147 <#list curEntry.getTags() as item>
148 <#if item.getName() == 'noticia-destacada'>
149 <#assign claseDestacada = "noticia-destacada" />
150 <#break>
151 </#if>
152 </#list>
153 </#if>
154 <#assign
155 assetRenderer = curEntry.getAssetRenderer()
156 journalArticle = assetRenderer.getAssetObject()
157 />
158 <#if idArticulos?seq_index_of(journalArticle.getArticleId()) == -1>
159 <#assign sizeEntries = sizeEntries - 1 />
160 <div class="${claseDestacada}">
161 <@liferay_journal["journal-article"]
162 articleId=journalArticle.getArticleId()
163 ddmTemplateKey=journalArticle.getDDMTemplateKey()
164 groupId=journalArticle.getGroupId()
165 />
166 </div>
167 </#if>
168 </#list>
169 </#if>
170
171 </#if>
172 </div>
173 </div>
174</div>
175
176<script>
177 // Inicializa los parametros de animación
178 function initAnimationsNoticias() {
179 gsap.from('.wrapper--noticias__home', {opacity: 0, x:0, y: 300, duration: 0.5, scrollTrigger: {
180 trigger: '.wrapper--noticias__home',
181 start: 'top 80%',
182 end: 'top 20%',
183 once: true
184 }});
185 }
186
187 // Función para cargar las animaciones después de que el DOM haya cargado
188 function loadAnimationsNoticias() {
189 gsap.registerPlugin(ScrollTrigger);
190 initAnimationsNoticias();
191 ScrollTrigger.refresh();
192 }
193
194 if (document.readyState === "loading") {
195 // Loading hasn't finished yet
196 document.addEventListener("DOMContentLoaded", loadAnimationsNoticias);
197 } else {
198 // `DOMContentLoaded` has already fired
199 loadAnimationsNoticias();
200 }
201</script>