Ficha skill - AndalucíaSkills

17 Desarrollo web
Consiste en la construcción y mantenimiento de páginas web. Los diseñadores web utilizan programas informáticos para producir páginas que incluyen enlaces a otras páginas, gráficos, elementos de texto y fotografías. El diseño de estos elementos puede ser presentado en forma de texto o mediante dibujos sobre papel.
Para implementar estas ideas, se utilizan programas informáticos, bibliotecas de código abierto y entornos de desarrollo (frameworks).Un diseñador web debe comprender tanto la tecnología como los valores artísticos implicados en el proceso.

Enseñanzas relacionadas
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> className [in template "20099#20125#61500" at line 168, column 14] ---- 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: #if className == "com.liferay.journal... [in template "20099#20125#61500" at line 168, column 9] ----
1<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")/>
2<#assign requestContainsCategory = themeDisplay.getURLCurrent()?contains('categories') />
3
4<#assign novedadesPortalUtil = serviceLocator.findService("com.abaco.portales.novedades.service.NovedadesPortalUtil") />
5<#assign categoryIdRequest = paramUtil.getLong(request, "categoryId")>
6<#assign publisherEntriesQuery = novedadesPortalUtil.publisherEntriesQuery(portletPreferences, groupId, categoryIdRequest)>
7<#assign orderedEntries = novedadesPortalUtil.ordenarNovedadesPortal(publisherEntriesQuery)>
8
9<#if orderedEntries?has_content>
10
11 <#assign unionListadoOrdenado = []>
12 <#assign contenidosPaginaActual = []>
13 <#assign numeroDestacadas = 0>
14
15 <#-- Usar el servicio para combinar y ordenar las listas -->
16 <#list orderedEntries as k, v>
17 <#if k == "destacadas">
18 <#assign numeroDestacadas = v?size>
19 </#if>
20 <#assign unionListadoOrdenado = unionListadoOrdenado + v >
21 </#list>
22
23 <#if unionListadoOrdenado?has_content>
24 <#-- Configurar paginación -->
25 <#assign totalItems = unionListadoOrdenado?size />
26 <#assign itemsPerPage = delta?number /> <#-- Número de elementos por página -->
27 <#assign currentPage = paramUtil.getInteger(request, "cur", 1) />
28 <#assign totalPages = ((totalItems + itemsPerPage - 1) / itemsPerPage)?int />
29 <#assign start = (currentPage - 1) * itemsPerPage />
30 <#assign end = start + itemsPerPage />
31
32 <#-- Asegurarse de que end no supere totalItems -->
33 <#if (end > totalItems)>
34 <#assign end = totalItems />
35 </#if>
36
37 <#-- Crear una lista de elementos para la página actual -->
38 <#list (start..end-1) as index>
39 <#if (index < totalItems)>
40 <#assign contenido = unionListadoOrdenado[index] />
41 <#-- Agregar a la lista de la página actual -->
42 <#assign contenidosPaginaActual = contenidosPaginaActual + [contenido] />
43 </#if>
44 </#list>
45 </#if>
46
47
48 <div class="adt-novedades" id="adt-novedades-jda">
49 <#assign conta = 1/>
50 <#list contenidosPaginaActual as curEntry>
51 <#assign renderer = curEntry.getAssetRenderer() className = renderer.getClassName() />
52 <#if className == "com.liferay.journal.model.JournalArticle">
53 <#assign journalArticle = renderer.getArticle()
54 ddmStructureName = journalArticle.getDDMStructure().getName("es_ES")
55 templateKey = ""
56 categories = curEntry.getCategories()
57 />
58
59
60 <#if requestContainsCategory>
61 <#assign validEntry = false />
62 <#assign requestCategoryId = themeDisplay.getURLCurrent()?substring(themeDisplay.getURLCurrent()?last_index_of('/')+1) />
63 <#if requestCategoryId?is_number>
64 <#assign requestCategoryId = requestCategoryId?number />
65 <#list categories as cat>
66 <#if cat.categoryId == requestCategoryId>
67 <#assign validEntry = true />
68 </#if>
69 </#list>
70 <#if !validEntry>
71 <#continue>
72 </#if>
73 </#if>
74
75
76 </#if>
77
78 <#assign viewURL = (!stringUtil.equals(assetLinkBehavior, "showFullContent"))?then(assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry, true), assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry)) />
79 ${request.setAttribute("viewURL", viewURL )}
80 ${request.setAttribute("categories", categories )}
81
82
83 <#-- Procedimiento -->
84 <#if ddmStructureName == "Procedimiento">
85 <#assign templateKey = "944524" /> <#-- Plantilla novedades_procedimientos -->
86 </#if>
87
88 <#-- Contenido web -->
89 <#if ddmStructureName == "Contenido web">
90 <#assign templateKey = "109055"/> <#-- Plantilla novedades_contenido_web-->
91 </#if>
92
93 <#-- Contenido web extendido-->
94 <#if ddmStructureName == "Contenido web extendido">
95 <#assign templateKey = "1243488"/> <#-- Plantilla novedades_contenido_web_extendido-->
96 </#if>
97
98 <#-- Enlace -->
99 <#if ddmStructureName == "Enlace">
100 <#assign templateKey = "4859236"/> <#-- Plantilla novedades_enlace-->
101 </#if>
102
103 <#-- Normativa -->
104 <#if ddmStructureName == "Normativa">
105 <#assign templateKey = "273977"/> <#-- Plantilla novedades_normativa-->
106 </#if>
107
108 <#-- Evento -->
109 <#if ddmStructureName == "Evento">
110 <#assign templateKey = "1873301"/> <#-- Plantilla novedades_evento-->
111 </#if>
112
113 <#if conta == 1>
114 <div class="adt-novedades__container">
115 <div class="adt-novedades__first">
116 <div class="card mb-3">
117 <@liferay_journal["journal-article"]
118 articleId=journalArticle.getArticleId()
119 ddmTemplateKey="${templateKey}"
120 showTitle=false
121 groupId=journalArticle.getGroupId()
122 />
123 </div>
124 </div>
125 <#assign conta++/>
126 <#elseif conta < 4>
127 <#if conta ==2>
128 <div class="adt-novedades__second">
129 </#if>
130 <div class="card mb-3">
131 <@liferay_journal["journal-article"]
132 articleId=journalArticle.getArticleId()
133 ddmTemplateKey="${templateKey}"
134 showTitle=false
135 groupId=journalArticle.getGroupId()
136 />
137 </div>
138 <#assign conta++/>
139 <#elseif (conta == 4)>
140 <#-- Cierro contenedor-second(flex) -->
141 </div>
142 <#-- Cierro contenedor(flex) -->
143 </div>
144 <#-- Abro Segundo contenedor(grid) -->
145 <div class="adt-novedades__grid">
146 <div class="card mb-3">
147 <@liferay_journal["journal-article"]
148 articleId=journalArticle.getArticleId()
149 ddmTemplateKey="${templateKey}"
150 showTitle=false
151 groupId=journalArticle.getGroupId()
152 />
153 </div>
154 <#assign conta++/>
155 <#elseif (conta >= 4)>
156 <div class="card mb-3">
157 <@liferay_journal["journal-article"]
158 articleId=journalArticle.getArticleId()
159 ddmTemplateKey="${templateKey}"
160 showTitle=false
161 groupId=journalArticle.getGroupId()
162 />
163 </div>
164 <#assign conta++/>
165 </#if>
166 </#if>
167 </#list>
168 <#if className == "com.liferay.journal.model.JournalArticle">
169 <#if (conta == 2)>
170 <#-- Cierro contenedor(flex) ya que solo hay un valor -->
171 </div>
172 <#elseif (conta == 3)>
173 <#-- Cierro contenedor (flex) y el second ya que solo hay dos valores -->
174 </div>
175 </div>
176 <#elseif (conta >= 4)>
177 <#-- Cierro contenedor(grid) -->
178 </div>
179 </#if>
180 </#if>
181 </div>
182</#if>
183
184<style>
185 .adt-novedades__second .journal-content-article {
186 height: 100%;
187 }
188 .adt-novedades .card .card-container {
189 height: 100%;
190 }
191</style>
Nodo: sv0666:8080