An error occurred while processing the template.
The following has evaluated to null or missing:
==> customTitle  [in template "20098#20124#FABRICA_TEMPLATE" at line 12, column 31]

----
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: ${customTitle.getData()}  [in template "20098#20124#FABRICA_TEMPLATE" at line 12, column 29]
----
1<#assign  
2	title = htmlUtil.escape(.vars['reserved-article-title'].data) 
3	articleId = htmlUtil.escape(.vars['reserved-article-id'].data) 
4	localizacion = _webContentsUtil.getCategoryFromVocabulary(groupId, articleId, 'localizacion') 
5/> 
6<div class="container-notFluid-mg"> 
7<div class="container-mg"> 
8<div class="prensa-details spacer"> 
9	<div class="titulo-pressrom-detalle"> 
10		<span class="titXL">${languageUtil.get(locale,"factories")}</span> 
11	</div> 
12	<h1 class="titXXXL">${customTitle.getData()}</h1> 
13	<div class="fabrica-details__image"> 
14		<#if validator.isNotNull(list.mainImages.mainImgExtended.getData()) > 
15			<@getImage img=list.mainImages.mainImgExtended classes="w-100 d-none d-lg-block d-xl-block" /> 
16		<#elseif validator.isNotNull(list.mainImages.mainImgDesktop.getData()) > 
17			<@getImage img=list.mainImages.mainImgDesktop classes="w-100 d-none d-lg-block d-xl-block" /> 
18		</#if> 
19		<#if validator.isNotNull(list.mainImages.mainImgResponsive.getData()) > 
20			<@getImage img=list.mainImages.mainImgResponsive classes="w-100 d-lg-none d-xl-none" /> 
21		</#if> 
22	</div> 
23	<div class="fabrica-details__others"> 
24		<div class="fabrica-details__others__first"></div> 
25		<div class="fabrica-details__others__localization"> 
26			<span class="fabrica-details__others__localization__title">${languageUtil.get(locale, "localization")}</span> 
27			<span class="fabrica-details__others__localization__value titXL">${localizacion[0].getTitle(locale)}</span> 
28		</div> 
29		<#if (details.employees.getData())??> 
30			<div class="fabrica-details__others__employees"> 
31				<span class="fabrica-details__others__employees__title">${languageUtil.get(locale, "employees")}</span> 
32				<span class="fabrica-details__others__employees__value titXL">${details.employees.getData()}</span> 
33			</div> 
34		</#if> 
35		<#if details.products.getData()?? && validator.isNotNull(_webContentsUtil.getValuesFromSelector(details.products.getData(), details.products.getOptionsMap()))> 
36			<div class="fabrica-details__others__products"> 
37				<span class="fabrica-details__others__products__title"> 
38					${languageUtil.get(locale, "products-factorized")} 
39				</span> 
40				<span class="fabrica-details__others__products__value titXL"> 
41					${_webContentsUtil.getValuesFromSelector(details.products.getData(), details.products.getOptionsMap())} 
42				</span>	 
43			</div> 
44		</#if> 
45		 
46		<#if (details.partnerYear.getData())??> 
47			<div class="fabrica-details__others__partner_year"> 
48				<span class="fabrica-details__others__partner_year__title">${languageUtil.get(locale, "partner-since")}</span> 
49				<span class="fabrica-details__others__partner_year__value titXL">${details.partnerYear.getData()}</span> 
50			</div> 
51		</#if> 
52		<div class="fabrica-details__others__last"></div> 
53	</div> 
54	<#if body.getSiblings()?has_content> 
55		<div class="prensa-details__body"> 
56			<ul>			 
57				<#assign contentImage="" /> 
58				<#list body.getSiblings() as body> 
59					<li class="prensa-details__body__item container-grid">	 
60						<#if (body.content.getData())??> 
61							<div class="prensa-details__body__item__description"> 
62								${body.content.getData()} 
63							</div> 
64						</#if> 
65						<#if validator.isNotNull(body.images.imgDesktop.getData()) ||  validator.isNotNull(body.images.imgResponsive.getData()) > 
66							<div class="prensa-details__body__item__media">						 
67								<div class="${contentImage}"> 
68									<div class="imageContainer--space"> 
69										<#if validator.isNotNull(body.images.imgDesktop.getData())> 
70											<@getImage img=body.images.imgDesktop classes="w-100 d-none d-lg-block d-xl-block" /> 
71										</#if> 
72										<#if validator.isNotNull(body.images.imgResponsive.getData()) > 
73											<@getImage img=body.images.imgResponsive classes="w-100 d-lg-none d-xl-none" /> 
74										</#if> 
75									</div> 
76								</div> 
77							</div> 
78						</#if> 
79 
80					</li> 
81					<#assign contentImage="contentImageCenter" /> 
82				</#list> 
83			</ul> 
84		</div> 
85	</#if> 
86</div> 
87</div> 
88</div> 
89 
90<#macro getImage img classes> 
91	<#assign  
92		alt = img.getAttribute("alt") 
93		entryId = img.getAttribute("fileEntryId") 
94		height = img.getAttribute("height")  
95		width = img.getAttribute("width")  
96		src = img.getData() 
97	/> 
98	<img class="${classes}" alt="${alt}" src="${src}"  
99		height="${height}" width="${width}" data-fileentryid="${entryId}"/> 
100</#macro> 
101 
102 
103<@liferay_util["html-top"]> 
104<style> 
105ol { 
106    list-style: decimal-leading-zero; 
107
108.titXXXL p { 
109	margin: 0; 
110
111.fabrica-details__others { 
112	display: flex; 
113	justify-content: space-between; 
114	gap: 3rem; 
115    margin-block: 3rem 2rem; 
116	padding-block-end: 1rem; 
117	overflow: auto; 
118    scroll-snap-type: x mandatory; 
119
120@media(max-width:1024px) { 
121 
122
123.fabrica-details__others > div { 
124    display: flex; 
125    flex-direction: column; 
126    align-items: center; 
127 
128	flex-shrink: 0; 
129	scroll-snap-align: start; 
130
131.fabrica-details__others > div span:first-of-type { 
132   font-size: 14px; 
133   line-height: 22px; 
134
135.fabrica-details__others > div span:not(:first-of-type) { 
136   font-size: 32px; 
137   line-height: 36px; 
138   font-family: Austin 
139
140 
141 
142 
143 
144 
145 
146 
147 
148.layout-fragment-page div#smooth-wrapper { 
149	position:static !important; 
150
151 
152.layout-fragment-page div#smooth-content { 
153	transform: inherit !important; 
154
155.layout-fragment-page div#main-content { 
156	max-width: 100% !important; 
157		padding:0px !important; 
158
159 
160h4.component-title { display:none;} 
161/*.titulo-pressrom-detalle { 
162	margin-top: 80px; 
163	margin-bottom: 3rem; 
164}*/ 
165.titulo-pressrom-detalle span { 
166	font-family: 'Austin'; 
167	font-style: normal; 
168	font-weight: 300; 
169	font-size: 48px; 
170	line-height: 56px; 
171	text-align: justify; 
172	color: #121314; 
173	margin-block-end: 3.4rem; 
174	display: inline-block; 
175
176 
177a.select-download > span:first-child { 
178	font-family: 'MangoSans'; 
179	font-style: normal; 
180	font-weight: 400; 
181	font-size: 11px; 
182	line-height: 16px; 
183	letter-spacing: 0.003em; 
184	color: #121314; 
185	transform: scale(1.1); 
186		transition: all 0.25s linear; 
187		color:#000; 
188
189 
190 
191.prensa-details h1{ 
192	font-family: 'Austin' !important; 
193	font-style: normal; 
194	font-weight: 200; 
195	font-size: 64px; 
196	line-height: 1; 
197	color: #121314; 
198	margin-bottom: 1.2rem; 
199	display: inline-block; 
200	width: 100%; 
201
202 
203.prensa-details__body > ul { 
204	padding-left: 0px; 
205		list-style:none; 
206
207 
208.prensa-details__body__item__description { 
209	margin-top: 64px; 
210	grid-column: 3/11; 
211	margin-bottom: 64px; 
212	font-family: 'MangoSans'; 
213	font-style: normal; 
214	font-weight: 300; 
215	font-size: 18px; 
216	line-height: 32px; 
217	letter-spacing: 0.003em; 
218	color: #121314; 
219
220.prensa-details__body__item__media { 
221	grid-column: 1/-1; 
222
223.container-grid > .imageContainer--space { 
224	grid-column: 2/12; 
225	column-gap: 10px; 
226
227 
228.contentImageCenter > .imageContainer--space { 
229	margin-left: 64px; 
230	margin-right: 64px; 
231
232 
233.prensa-details ::marker { 
234	color: #121314 !important; 
235
236 
237h2.prensa-details__body__item__subtitle { 
238	grid-column: 3/11; 
239	font-family: 'Austin' !important; 
240	font-style: normal !important; 
241	font-weight: 300 !important; 
242	font-size: 48px; 
243	line-height: 48px !important; 
244	color: #121314; 
245	margin-bottom: 32px; 
246	margin-top: 64px; 
247
248 
249h2.prensa-details__body__item__subtitle + .prensa-details__body__item__description { 
250	margin-top: 0px; 
251
252 
253@media(max-width:1024px) { 
254 
255	.prensa-details h1 { 
256			font-family: 'Austin' !important; 
257			font-style: normal; 
258			font-weight: 200; 
259			font-size: 57px; 
260			line-height: 57px; 
261
262	 
263
264 
265 
266@media(max-width:768px){ 
267	.prensa-details h1 { 
268		font-weight: 300; 
269		font-size: 40px; 
270		line-height: 44px !important; 
271
272 
273	h2.prensa-details__body__item__subtitle { 
274		grid-column: 1/13; 
275		font-size: 32px; 
276		line-height: 40px !important; 
277		margin-bottom: 32px; 
278		margin-top: 32px; 
279
280 
281	.prensa-details__body__item__description { 
282		margin-top: 42px; 
283		margin-bottom: 32px; 
284		grid-column: 1/13; 
285
286	.prensa-details__body__item__description { 
287		font-size: 16px; 
288		line-height: 24px; 
289
290	.prensa-details h1 { 
291		font-weight: 300 !important; 
292		font-size: 40px !important; 
293		line-height: 44px !important; 
294		margin-bottom: 32px; 
295
296	.prensa-details .container-grid { 
297		grid-column-gap: 0px !important; 
298		grid-template-columns: 0; 
299
300	.contentImageCenter > .imageContainer--space { 
301		margin-left: 0px; 
302		margin-right: 0px; 
303
304	.titulo-pressrom-detalle { 
305		margin-top: 40px; 
306
307		 
308	.titulo-pressrom-detalle span { 
309		font-size: 24px; 
310		line-height: 32px; 
311		text-align: justify; 
312		color: #121314; 
313
314
315</style> 
316 
317</@> 

More factories