ÚLTIMOS EPISODIOS PUBLICADOS

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> audioVideoUrl  [in template "15553970#15554109#17210296" at line 68, column 103]

----
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: ${audioVideoUrl}  [in template "15553970#15554109#17210296" at line 68, column 101]
----
1<#if entries?has_content> 
2	<#assign urlBase = "" /> 
3	<#assign urlFriendly = themeDisplay.getLayout().getFriendlyURL() /> 
4	<#assign urlCurrent = themeDisplay.getURLCurrent() /> 
5	<#if urlCurrent?contains(urlFriendly)> 
6		<#assign urlBase = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()?keep_before_last("/")?remove_ending("/")  /> 
7	<#else> 
8		<#assign urlBase = themeDisplay.getPortalURL() +themeDisplay.getURLCurrent()?remove_ending("/")  /> 
9	</#if> 
10 
11 
12 
13	<div class="row"> 
14	<#list entries as curEntry> 
15 
16		<#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry, true) /> 
17		<#assign renderer = curEntry.getAssetRenderer()> 
18        <#assign className = renderer.getClassName()> 
19 
20        <#if className == "com.liferay.journal.model.JournalArticle"> 
21            <#assign journalArticle = renderer.getArticle()> 
22            <#assign jaResourcePrimKey = journalArticle.getResourcePrimKey()> 
23		    <#assign reproducciones = journalArticle.getExpandoBridge().getAttribute('reproducciones')> 
24            <#assign document = saxReaderUtil.read(journalArticle.getContent())> 
25            <#assign rootElement = document.getRootElement()> 
26            <#assign defaultLanguageId = parseXml ("@default-locale", rootElement)> 
27 
28            <#assign title = getField("Título", locale, defaultLanguageId, rootElement)!> 
29            <#assign resume = getField("Resumen", locale, defaultLanguageId, rootElement)!> 
30 
31    		<#attempt> 
32	    		<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='imagen']")> 
33	    		<#assign img = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
34	    		<#if isJson(img)> 
35                    <#assign imgJson = jsonFactoryUtil.createJSONObject(img)> 
36                    <#assign imgUrl = "/documents/" + imgJson.groupId + "/" + imgJson.uuid > 
37                </#if> 
38                 
39            <#recover> 
40            	<#assign imgUrl = ""> 
41            </#attempt> 
42 
43    		<#attempt> 
44	    		<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='ArchivoDeAudioVideo']")> 
45	    		<#assign audioVideo = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
46	    		<#if isJson(audioVideo)> 
47                    <#assign audioVideoJson = jsonFactoryUtil.createJSONObject(audioVideo)> 
48                    <#assign audioVideoUrl = "/documents/" + audioVideoJson.groupId + "/" + audioVideoJson.uuid > 
49                </#if> 
50                 
51            <#recover> 
52            	<#assign audioVideoUrl = ""> 
53            </#attempt> 
54 
55			<#-- OBTIENE LAS CATEGORIAS --> 
56			<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]/> 
57			<#assign categoryList = assetCategoryLocalServiceUtil.getCategories(className , journalArticle.resourcePrimKey) > 
58 
59			<div class="col-sm-6"> 
60				<div class="latest-publications-card"> 
61					<div class="latest-publications-header"> 
62						<div class="header-img"> 
63							<img loading="lazy" decoding="async" src="${imgUrl}" width="370" height="290" alt="Serie image"> 
64						</div> 
65						<div class="header-content"> 
66							<div class="actions-cont"> 
67								<div class="actions"> 
68									<a class="jPlayerPlay" url="${audioVideoUrl}" title="${title}" id="${jaResourcePrimKey}" counter="${reproducciones}"> 
69			        					<i class="play icon-play"></i> 
70			        				</a> 
71			        			</div> 
72							</div> 
73						</div> 
74					</div> 
75					<div class="latest-publications-content"> 
76						<h5 class="title"><a href="${viewURL}">${title}</a></h5> 
77						<p class="meta"> 
78							<span class="date"> 
79							    <#setting locale="es_ES"> 
80								${journalArticle.getDisplayDate()?date?string["d MMMM'.' yyyy"]} 
81							</span> 
82						</p> 
83						<div class="content-resume small"> 
84							<p>${resume}</p> 
85						</div> 
86						<p class="read-more small"> 
87							<a href="${viewURL}" class="button-detail"> 
88								Leer más... <i class="icon-long-arrow-right"></i> 
89							</a> 
90						</p> 
91						<p class="tags"> 
92							<#list categoryList as category> 
93								<a href="${urlBase + '/publicaciones-categoría?categoryId=' + category.getCategoryId() + '&page=1'}" class="view_category"> 
94									<i class="icon-tag"></i> ${category.getName()} 
95								</a> 
96							</#list> 
97						</p> 
98					</div> 
99				</div> 
100			</div> 
101		</#if> 
102	</#list> 
103	</div> 
104</#if> 
105 
106 
107 
108 
109<#function getField field languageId defaultLanguageId xml> 
110    <#local defaultSelector = "//dynamic-content[@language-id='" + defaultLanguageId + "' and ancestor-or-self::*[@name='" + field + "']]"> 
111    <#local localeSelector = "//dynamic-content[@language-id='" + languageId + "' and parent::*[@name='" + field + "']]"> 
112 
113    <#local selector = saxReaderUtil.createXPath(localeSelector)> 
114    <#local value = selector.selectSingleNode(xml)!> 
115 
116    <#if value?has_content && value.getText()?has_content> 
117        <#return value.getText()> 
118    </#if> 
119 
120    <#local selector = saxReaderUtil.createXPath(defaultSelector)> 
121    <#local value = selector.selectSingleNode(xml)!> 
122 
123    <#if value?has_content && value.getText()?has_content> 
124        <#return value.getText()> 
125    </#if> 
126 
127    <#return ""> 
128</#function> 
129 
130<#function parseXml xpath xml> 
131    <#local selector = saxReaderUtil.createXPath(xpath)> 
132    <#local result = selector.selectSingleNode(xml)!> 
133 
134    <#if result?has_content> 
135        <#return result.getStringValue()> 
136    </#if> 
137 
138    <#return ""> 
139</#function> 
140 
141<#function isJson json> 
142    <#local value = json?trim> 
143    <#return value?has_content && value?starts_with("{") && value?ends_with("}")> 
144</#function> 

PUBLICACIONES POR ETAPAS EDUCATIVAS

null Nouvelle (haute) couture

Nouvelle (haute) couture


Fondo

Les élèves de Seconde Langue Étrangère: Français de 1er BAC (année 2024-2025) nous présentent la trajectoire de deux dessinateurs de mode actuels qui ont déclenché une révolution dans son domaine. Il s'agit de Palomo Spain et de Lucía Miravalles, fondatrice de la marque asturienne "RingoRango". [ESP] El alumnado de Segunda Lengua Extranjera: Francés de 1º Bachillerato (curso 2024-2025) nos presentan la trayectoria de dos diseñadores de moda que han desencadenado una pequeña revolución en su campo. Se trata de Palomo Spain y de Lucía Miravalles, fundadora de la marca asturiana "RingoRango".

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> audioVideoUrl  [in template "15553970#15554109#17210302" at line 128, column 67]

----
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: ${audioVideoUrl}  [in template "15553970#15554109#17210302" at line 128, column 65]
----
1<#assign dynamicQueryFactoryUtil = staticUtil["com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil"] /> 
2<#assign classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService")> 
3<#assign expandoValueLocalService = serviceLocator.findService("com.liferay.expando.kernel.service.ExpandoValueLocalService")> 
4<#assign propertyFactoryUtil = staticUtil["com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil"] /> 
5<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
6<#assign expandoValueClass = staticUtil["com.liferay.portal.kernel.util.ClassResolverUtil"].resolveByPortalClassLoader("com.liferay.expando.kernel.model.ExpandoValue") /> 
7<#assign PortalClassLoaderUtil = staticUtil["com.liferay.portal.kernel.util.PortalClassLoaderUtil"] /> 
8<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/> 
9<#assign expandoColumnLocalService = serviceLocator.findService("com.liferay.expando.kernel.service.ExpandoColumnLocalService") /> 
10<#assign expandoTableLocalService = serviceLocator.findService("com.liferay.expando.kernel.service.ExpandoTableLocalService") /> 
11 
12<#if entries?has_content> 
13 
14 
15 
16<#assign title = ""> 
17<#if portletPreferences["portletSetupTitle_es_ES"]??> 
18    <#assign title = portletPreferences["portletSetupTitle_es_ES"]?first /> 
19</#if> 
20 
21<h1 style="text-align: center; white-space: nowrap;">${title}</h1> 
22 
23 
24<#assign classNameId = classNameLocalService.getClassNameId("com.liferay.journal.model.JournalArticle")> 
25<#assign entryIds = [] /> 
26<#assign assetEntries = AssetEntryLocalService.getGroupEntries(themeDisplay.getScopeGroupId())> 
27 
28<#assign structureId = portletPreferences["classTypeIdsJournalArticleAssetRendererFactory"] /> 
29 
30<#list assetEntries as assetEntry> 
31    <#if assetEntry.className =="com.liferay.journal.model.JournalArticle" &&  assetEntry.getVisible() == true  && structureId[0] == assetEntry.getClassTypeId()?string > 
32        <#assign entryId =journalArticleLocalService.fetchLatestArticle(assetEntry.getClassPK()).id/> 
33        <#assign entryIds = entryIds + [entryId] /> 
34    </#if> 
35</#list> 
36 
37<#assign expandoTable = expandoTableLocalService.getTable(companyId, classNameId, "CUSTOM_FIELDS") /> 
38<#assign expandoColumn = expandoColumnLocalService.getColumn(expandoTable.getTableId(), "reproducciones") /> 
39<#assign columnId = expandoColumn.getColumnId() /> 
40 
41<#assign dynamicQuery = dynamicQueryFactoryUtil.forClass(expandoValueClass, PortalClassLoaderUtil.getClassLoader())> 
42<#assign valueIdProperty = propertyFactoryUtil.forName("classPK")/> 
43<#assign dynamicQuery = dynamicQuery.add(valueIdProperty.in(entryIds))/> 
44<#assign propertyColumnId = propertyFactoryUtil.forName("columnId") /> 
45<#assign dynamicQuery = dynamicQuery.add(propertyColumnId.eq(columnId)) /> 
46<#assign expandoValues = expandoValueLocalService.dynamicQuery(dynamicQuery) /> 
47 
48<#assign convertedValues = []> 
49<#list expandoValues as value> 
50 
51    <#assign dataNumber = value.data?number> 
52     
53    <#assign convertedValues = convertedValues + [{ 
54        "value": value,  
55        "dataNumber": dataNumber 
56        }]> 
57</#list> 
58  
59<#assign sortedValues = convertedValues?sort_by("dataNumber")> 
60<#assign sortedValues = sortedValues?reverse> 
61 
62<#assign delta = portletPreferences["delta"][0]?number> 
63 
64<#assign urlBase = "" /> 
65<#assign urlFriendly = themeDisplay.getLayout().getFriendlyURL() /> 
66<#assign urlCurrent = themeDisplay.getURLCurrent() /> 
67<#if urlCurrent?contains(urlFriendly)> 
68    <#assign urlBase = themeDisplay.getURLCurrent()?keep_before_last("/") /> 
69<#else> 
70    <#assign urlBase = themeDisplay.getURLCurrent() /> 
71</#if> 
72 
73<#assign counter = 0> 
74 
75<div class="row"> 
76    <#list sortedValues as value> 
77 
78        <#if counter lt delta> 
79            <#assign journalArticle = journalArticleLocalService.getArticle(value.value.classPK) /> 
80            <#assign jaResourcePrimKey = journalArticle.getResourcePrimKey()> 
81            <#assign assetEntry = AssetEntryLocalService.fetchEntry(classNameId, jaResourcePrimKey) /> 
82            <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetEntry, true) /> 
83            <#assign reproducciones = journalArticle.getExpandoBridge().getAttribute('reproducciones')> 
84            <#assign document = saxReaderUtil.read(journalArticle.getContent())> 
85            <#assign rootElement = document.getRootElement()> 
86            <#assign defaultLanguageId = parseXml ("@default-locale", rootElement)> 
87 
88            <#assign title = getField("Título", locale, defaultLanguageId, rootElement)!> 
89            <#assign resume = getField("Resumen", locale, defaultLanguageId, rootElement)!> 
90 
91            <#attempt> 
92                <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='imagen']")> 
93                <#assign img = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
94                <#if isJson(img)> 
95                    <#assign imgJson = jsonFactoryUtil.createJSONObject(img)> 
96                    <#assign imgUrl = "/documents/" + imgJson.groupId + "/" + imgJson.uuid > 
97                </#if> 
98            <#recover> 
99                <#assign imgUrl = ""> 
100            </#attempt> 
101 
102            <#attempt> 
103                <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='ArchivoDeAudioVideo']")> 
104                <#assign audioVideo = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
105                <#if isJson(audioVideo)> 
106                    <#assign audioVideoJson = jsonFactoryUtil.createJSONObject(audioVideo)> 
107                    <#assign audioVideoUrl = "/documents/" + audioVideoJson.groupId + "/" + audioVideoJson.uuid > 
108                </#if> 
109            <#recover> 
110                <#assign audioVideoUrl = ""> 
111            </#attempt> 
112 
113 
114 
115            <#-- OBTIENE LAS CATEGORIAS --> 
116            <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]/> 
117            <#assign categoryList = assetCategoryLocalServiceUtil.getCategories(className , journalArticle.resourcePrimKey) > 
118 
119            <div class="col-sm-6"> 
120                <div class="latest-publications-card"> 
121                    <div class="latest-publications-header"> 
122                        <div class="header-img"> 
123                            <img loading="lazy" decoding="async" src="${imgUrl}" width="370" height="290" alt="Serie image"> 
124                        </div> 
125                        <div class="header-content"> 
126                            <div class="actions-cont"> 
127                                <div class="actions"> 
128                                    <a class="jPlayerPlay" url="${audioVideoUrl}" title="${title}" id="${jaResourcePrimKey}" counter="${reproducciones}"> 
129                                        <i class="play icon-play"></i> 
130                                    </a> 
131                                </div> 
132                            </div> 
133                        </div> 
134                    </div> 
135                    <div class="latest-publications-content"> 
136                        <h5 class="title"><a href="${viewURL}">${title}</a></h5> 
137                        <p class="meta"> 
138                            <span class="date"> 
139                                ${journalArticle.getDisplayDate()?date?string["d MMMM'.' yyyy"]} 
140                            </span> 
141                        </p> 
142                        <div class="content-resume small"> 
143                            <p>${resume}</p> 
144                        </div> 
145                        <p class="read-more small"> 
146                            <a href="${viewURL}" class="button-detail"> 
147                                Leer más... <i class="icon-long-arrow-right"></i> 
148                            </a> 
149                        </p> 
150                        <p class="tags"> 
151                            <#list categoryList as category> 
152                                <a href="${urlBase + '/publicaciones-categoría?categoryId=' + category.getCategoryId() + '&page=1'}" class="view_category"> 
153                                    <i class="icon-tag"></i> ${category.getName()} 
154                                </a> 
155                            </#list> 
156                        </p> 
157                    </div> 
158                </div> 
159            </div> 
160            <#assign counter = counter + 1>  
161        <#else> 
162            <#break> 
163        </#if> 
164    </#list> 
165</div> 
166 
167</#if> 
168 
169 
170<#function getField field languageId defaultLanguageId xml> 
171    <#local defaultSelector = "//dynamic-content[@language-id='" + defaultLanguageId + "' and ancestor-or-self::*[@name='" + field + "']]"> 
172    <#local localeSelector = "//dynamic-content[@language-id='" + languageId + "' and parent::*[@name='" + field + "']]"> 
173 
174    <#local selector = saxReaderUtil.createXPath(localeSelector)> 
175    <#local value = selector.selectSingleNode(xml)!> 
176 
177    <#if value?has_content && value.getText()?has_content> 
178        <#return value.getText()> 
179    </#if> 
180 
181    <#local selector = saxReaderUtil.createXPath(defaultSelector)> 
182    <#local value = selector.selectSingleNode(xml)!> 
183 
184    <#if value?has_content && value.getText()?has_content> 
185        <#return value.getText()> 
186    </#if> 
187 
188    <#return ""> 
189</#function> 
190 
191<#function parseXml xpath xml> 
192    <#local selector = saxReaderUtil.createXPath(xpath)> 
193    <#local result = selector.selectSingleNode(xml)!> 
194 
195    <#if result?has_content> 
196        <#return result.getStringValue()> 
197    </#if> 
198 
199    <#return ""> 
200</#function> 
201 
202<#function isJson json> 
203    <#local value = json?trim> 
204    <#return value?has_content && value?starts_with("{") && value?ends_with("}")> 
205</#function>