Explore this selection of printers and design studios specialising in a wide range of materials and services, from information brochures and programmes to customised signage. Ensure a professional and polished image in every visual detail, strengthening your event's identity and enhancing the attendee experience with printed materials that combine creativity and functionality.

Back ASTURCOPIA

An error occurred while processing the template.
Java method "as.asac.template.tools.DLToolImpl.getThumbnailByJSON(String, String)" threw an exception when invoked on as.asac.template.tools.DLToolImpl object "as.asac.template.tools.DLToolImpl@4f12c5de"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign slideThumbnail1 = dlTool.getT...  [in template "37703#37743#9000456" at line 61, column 73]
----
1<#-- Services --> 
2<#assign assetEntryLocalServiceUtil = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/> 
3<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/> 
4<#assign journalArticleResourceServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")/> 
5<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
6<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
7<#assign ddmStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")/> 
8 
9<#-- Reserved vbles --> 
10<#assign title = .vars['reserved-article-title'].data> 
11<#assign articleId=.vars["reserved-article-id"].data /> 
12<#assign description=.vars["reserved-article-description"].data /> 
13<#assign smallImageUrl=.vars["reserved-article-small-image-url"].data /> 
14<#assign date=.vars["reserved-article-display-date"].data /> 
15<#assign request = .vars['request']> 
16 
17<#-- Init --> 
18 
19<#assign assetEntry = journalTool.getAssetEntryByArticleId(groupId, articleId)> 
20<#assign journalArticle = journalTool.getJournalArticleByAssetEntry(assetEntry)> 
21<#assign ddmStructureNameNormalize = "template-${friendlyURLNormalizerTool.normalize(journalArticle.getDDMStructure().getName(localeUtil.getDefault()))}" /> 
22<#assign articleURL = themeDisplay.getURLPortal()+themeDisplay.getURLCurrent()> 
23<#assign articleMainImageThumbnail3 = dlTool.getThumbnail(smallImageUrl, "3", layoutSetBannerPath)! /> 
24<#assign articleMainImageThumbnail1 = dlTool.getThumbnail(smallImageUrl, "1")! /> 
25 
26 
27<#-- Categories --> 
28<#assign concejo = journalTool.getCategories(groupId, articleId, ["MICE :: Concejo"])/> 
29 
30 
31<article class="template template-mice template-${ddmStructureNameNormalize} template-mice-article" role="article" > 
32 
33	<div class="container"> 
34		<div class="row no-gutters"> 
35			<div class="col-12"> 
36 
37				<h2 class="article-title" itemprop="name">${title}</h2> 
38				 
39				 
40				<#if validator.isNotNull(Descripcion.getData())> 
41					<div class="article-description mt-2 mb-4"> 
42						${Descripcion.getData()} 
43					</div> 
44				</#if> 
45			 
46				<#assign slideImagesCount = 0 /> 
47				<#assign slideImagesSize = Visualizador.Imagen.getSiblings()?size /> 
48				<#if  Visualizador.Imagen.getSiblings()?has_content || validator.isNotNull(smallImageUrl)> 
49					<div id="article-carousel" class="carousel slide carousel-fade carousel-article" data-ride="carousel" data-interval="5000"> 
50						<span aria-hidden="true" class="loading-animation loading-bg"></span> 
51						<div class="carousel-inner"> 
52							<#if validator.isNotNull(smallImageUrl)> 
53								<div class="carousel-item active aspect-ratio-bg-cover" style="background-image: url(${articleMainImageThumbnail3});"> 
54									<img class="hide" src="${articleMainImageThumbnail1}" alt="${title}" title="${title}"/> 
55								</div> 
56								<#assign slideImagesCount = slideImagesCount + 1 /> 
57							</#if> 
58							<#list Visualizador.Imagen.getSiblings() as Slide> 
59								<#if Slide?? && validator.isNotNull(Slide) && Slide.data?? && validator.isNotNull(Slide.data)> 
60 
61									<#assign slideThumbnail1 = dlTool.getThumbnailByJSON(Slide.data, "1")! /> 
62									<#assign slideThumbnail3 = dlTool.getThumbnailByJSON(Slide.data, "3")! /> 
63									<#assign slideTitle = "${languageUtil.get(request, 'image')} ${title}" /> 
64									<#assign slideAlt = slideTitle /> 
65									<#if Slide.TituloImagen?? && Slide.TituloImagen.data?has_content> 
66										<#assign slideTitle = Slide.TituloImagen.data />   
67										<#assign slideAlt = slideTitle /> 
68									</#if> 
69									<#if Slide.AltImagen?? && validator.isNotNull(Slide.AltImagen.getData())> 
70										<#assign slideAlt = Slide.AltImagen.getData() /> 
71									</#if> 
72								<#else> 
73									<#continue> 
74								</#if> 
75								<div class="carousel-item aspect-ratio-bg-cover" style="background-image: url(${slideThumbnail3});"> 
76									<img class="hide" src="${slideThumbnail1}" alt="${slideAlt}" title="${slideTitle}"/> 
77								</div> 
78								<#assign slideImagesCount = slideImagesCount + 1 /> 
79							</#list> 
80						</div> 
81						<#if Visualizador.Imagen.getSiblings()?size gt 1> 
82							<a class="carousel-control-prev" href="#article-carousel" data-slide="prev"> 
83								<span class="carousel-control-prev-icon" aria-hidden="true"><!-- ${languageUtil.get(request, "previous")} --></span> 
84								<span class="hide-accessible">${languageUtil.get(request, "previous")}</span> 
85							</a> 
86							<a class="carousel-control-next" href="#article-carousel" data-slide="next"> 
87								<span class="carousel-control-next-icon" aria-hidden="true"><!-- ${languageUtil.get(request, "next")}--></span> 
88								<span class="hide-accessible">${languageUtil.get(request, "next")}</span> 
89							</a> 
90							<ol class="carousel-indicators "> 
91								<#assign index = 0 /> 
92								<#list 1..slideImagesCount as item> 
93									<li data-target="#article-carousel" data-slide-to="${index}" <#if index==0> class="active"</#if>></li> 
94									<#assign index = index + 1 /> 
95								</#list> 
96							</ol> 
97						</#if> 
98					</div> 
99				</#if> 
100			</div> 
101		</div> 
102		<#if validator.isNotNull(Geolocalizacion.Coordenadas.getData())> 
103			<div class="article-map-switch mt-2 mb4"> 
104				<label class="toggle-switch"> 
105					<input class="toggle-switch-check mapShow" type="checkbox" onclick="showArticleMap(${articleId})"/> 
106					<span aria-hidden="true" class="toggle-switch-bar"> 
107						<span class="toggle-switch-handle"></span> 
108					</span> 
109				</label> 
110				<span class="label-map text-lowercase">${languageUtil.get(request, "infoasturias-mice-mostrar-ubicacion")}</span> 
111			</div> 
112			<#assign coordenadas=stringUtil.split(Geolocalizacion.Coordenadas.data) /> 
113			<div id="article-map-wrapper-${articleId}" class="article-section-map article-map-wrapper my-4 hide-visibility">  
114				<div id="article-map-content-${articleId}" style="width: 100%; height: 388px; z-index:1"><!-- MAP --></div> 
115				<div class="article-map-form">  
116					<div class="name important">${title}</div> 
117					<div class="gps"><span class="label">GPS:</span> <span class="value important" itemprop="geo">${Geolocalizacion.Coordenadas.data}</span></div> 
118					<form action="https://maps.google.es/maps" method="get" target="_blank"> 
119						<input type="hidden" name="daddr" value="${coordenadas[0]},${coordenadas[1]}"> 
120						<label for="saddrText"><span class="label hide-accessible">${languageUtil.get(request,'infoasturias-insert-from')}: </span></label> 
121						<label for="saddr"><span class="label">${languageUtil.get(request,'infoasturias-from')}: </span></label> 
122						<input class="form-control" type="text" maxlength="40" name="saddrText" id="saddrText" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}"> 
123						<input class="form-control" type="hidden" name="saddr" id="saddr" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}"> 
124						<button class="btn btn-text" type="submit">${languageUtil.get(request,'infoasturias-como-llegar')} &raquo;</button> 
125					</form> 
126				</div> 
127				<div class="article-section-scripts"> 
128					<script src="/o/turismo-asturias-theme/js/leaflet/leaflet.js"></script> 
129					<script type="text/javascript"> 
130						AUI().ready('aui-base', function(A){ 
131							var lat = ${coordenadas[0]}, 
132								lng = ${coordenadas[1]}, 
133								zoom = 16; 
134							mapContent = new L.map('article-map-content-${articleId}', {center: [lat, lng], zoom: 16}); 
135 
136							//Marker 
137							var defaultIconTheme = '/o/turismo-asturias-theme/css/images/icons/mark-box.png'; 
138							var defaultIcon = L.icon({ 
139								iconUrl: defaultIconTheme, 
140								iconSize:     [36, 53], 
141								iconAnchor:   [18, 53], 
142								iconShadow:   [0,0], 
143								popupAnchor:  [0, -30] 
144							}); 
145							var marker = L.marker([lat, lng], {icon: defaultIcon}).addTo(mapContent); 
146 
147							//Contributor 
148							L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 
149								attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.' 
150							}).addTo(mapContent); 
151							 
152						}); //AUI.ready 
153 
154						function showArticleMap(articleId){ 
155							if($("#article-map-wrapper-"+articleId).hasClass("hide-visibility")){ 
156								$(".toggle-switch-check").attr( 'checked', '' ); 
157								$(".label-map").text("${languageUtil.get(request, 'infoasturias-mice-ocultar-ubicacion')}"); 
158								$("#article-map-wrapper-"+articleId).removeClass("hide-visibility"); 
159							}else{ 
160								$(".toggle-switch-check").removeAttr( 'checked'); 
161								$(".label-map").text("${languageUtil.get(request, 'infoasturias-mice-mostrar-ubicacion')}"); 
162								$("#article-map-wrapper-"+articleId).addClass("hide-visibility"); 
163
164
165					</script> 
166				</div> 
167			</div> 
168		</#if> 
169		<#if concejo?size gt 0 || validator.isNotNull(Direccion.getData()) || validator.isNotNull(CP.getData()) || validator.isNotNull(Poblacion.getData()) || validator.isNotNull(Telefono.getData()) || validator.isNotNull(Email.getData()) || validator.isNotNull(Web.getData()) || validator.isNotNull(PersonaDeContacto.getData()) || validator.isNotNull(Cargo.getData()) || validator.isNotNull(RedesSociales.Facebook.getData()) || validator.isNotNull(RedesSociales.Twitter.getData()) || validator.isNotNull(RedesSociales.Instagram.getData()) || validator.isNotNull(RedesSociales.Linkedin.getData()) || validator.isNotNull(RedesSociales.TikTok.getData()) || validator.isNotNull(RedesSociales.Youtube.getData()) || validator.isNotNull(RedesSociales.Pinterest.getData())> 
170		    <div class="article-info-table mb-4"> 
171			<div class="article-info-table-row"> 
172				<#if validator.isNotNull(Direccion.getData()) || validator.isNotNull(CP.getData()) || validator.isNotNull(Poblacion.getData()) || validator.isNotNull(Telefono.getData()) || validator.isNotNull(Email.getData()) || validator.isNotNull(Web.getData()) || validator.isNotNull(PersonaDeContacto.getData()) || validator.isNotNull(Cargo.getData())> 
173					<div class="article-info-table-cell col-lg-7 col-12"> 
174						<ul class="article-list list-unstyled article-list-info"> 
175							<#if validator.isNotNull(Direccion.getData())> 
176								<li class="article-list-item"> 
177									<span class="far fa-address-card"> 
178										<span class="hide-accessible">${languageUtil.get(request,"address")}</span> 
179									</span> 
180									<span class="field-wrapper"> 
181										<span class="field">${languageUtil.get(request, "address")}:</span> 
182										<span class="text">${Direccion.getData()}</span> 
183										<#if validator.isNotNull(CP.getData()) && validator.isNotNull(Poblacion.getData())> 
184											<span class="text"> ■ ${CP.getData()} - ${Poblacion.getData()}</span> 
185										</#if> 
186									</span> 
187								</li> 
188							</#if> 
189							<#if Telefono.getSiblings()?has_content>								 
190								<li class="article-list-item"> 
191									<span class="fas fa-phone-alt"> 
192										<span class="hide-accessible">${languageUtil.get(request,"phone")}</span> 
193									</span> 
194									<span class="field-wrapper"> 
195										<span class="field">${languageUtil.get(request, "phone")}:</span> 
196										<#list Telefono.getSiblings() as telephone> 
197										<#assign numberTelefono = telephone.data?replace(" ", "")/>	 
198										<#assign numberLength = numberTelefono?length/> 
199										<#if numberLength == 9> 
200											<#assign number = "+34${numberTelefono}"/> 
201										<#else> 
202											<#assign number = numberTelefono/> 
203										</#if> 
204										<span class="text"> 
205											<a href="tel:${number}" itemprop="telephone">${telephone.data}</a> 
206											<#if !telephone?is_last>|</#if> 
207										</span> 
208										</#list>													 
209									</span> 
210								</li> 
211							</#if> 
212							<#if validator.isNotNull(Email.getData())> 
213								<li class="article-list-item"> 
214									<span class="far fa-envelope"> 
215										<span class="hide-accessible">${languageUtil.get(request,"email")}</span> 
216									</span> 
217									<span class="field-wrapper"> 
218										<span class="field">${languageUtil.get(request, "email")}:</span> 
219										 
220										<span class="text"> 
221											<a class="" href="mailto:${Email.getData()}" title="${languageUtil.format(request,'send-email-to-x', 'Email.getData()')}" itemprop="email">${Email.getData()}</a>	 
222										</span> 
223										 
224									</span> 
225								</li> 
226							</#if> 
227							<#if validator.isNotNull(Web.getData())> 
228								<li class="article-list-item web"> 
229									<span class="fas fa-link"> 
230										<span class="hide-accessible">${languageUtil.get(request,"site")}</span> 
231									</span> 
232									<span class="field-wrapper"> 
233										<span class="field">${languageUtil.get(request, "site")}:</span> 
234											<span class="text"> 
235												<#assign linkURL = Web.getData()/> 
236												<#if !stringUtil.startsWith(linkURL, "http")> 
237													<#assign linkURL = "https://${Web.getData()}"/> 
238												</#if> 
239												<a href="${linkURL}" title="${languageUtil.format(request,'go-to-x', 'site')}" itemprop="url">${Web.getData()}</a> 
240											</span> 
241									</span> 
242								</li> 
243							</#if>	 
244						</ul> 
245					</div> 
246				</#if> 
247					 
248				<#if validator.isNotNull(Servicios.getData()) || validator.isNotNull(RedesSociales.Facebook.getData()) || validator.isNotNull(RedesSociales.Twitter.getData()) || validator.isNotNull(RedesSociales.Instagram.getData()) || validator.isNotNull(RedesSociales.Linkedin.getData()) || validator.isNotNull(RedesSociales.TikTok.getData()) || validator.isNotNull(RedesSociales.Youtube.getData()) || validator.isNotNull(RedesSociales.Pinterest.getData())> 
249					<div class="article-info-table-cell col-lg-5 col-12">						 
250						<#if validator.isNotNull(Servicios.getData()) || validator.isNotNull(RedesSociales.Facebook.getData()) || validator.isNotNull(RedesSociales.Twitter.getData()) || validator.isNotNull(RedesSociales.Instagram.getData()) || validator.isNotNull(RedesSociales.Linkedin.getData()) || validator.isNotNull(RedesSociales.TikTok.getData()) || validator.isNotNull(RedesSociales.Youtube.getData()) || validator.isNotNull(RedesSociales.Pinterest.getData())> 
251							<#if validator.isNotNull(Servicios.getData())> 
252								<div class="article-description mt-2 mb-4"> 
253									${Servicios.getData()} 
254								</div> 
255							</#if> 
256							<div class="socials-wrapper"> 
257								<div class="socials"> 
258									<ul class="list-inline items socials"> 
259										<#if validator.isNotNull(RedesSociales.Facebook.getData())> 
260											<#assign linkURL = RedesSociales.Facebook.data/> 
261												 
262												<#if !stringUtil.startsWith(linkURL, "http")> 
263													<#assign linkURL = "https://${RedesSociales.Facebook.data}"/> 
264												</#if> 
265											<li class="list-inline-item item facebook"> 
266												<a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Facebook')}" onclick="this.target='_blank'"> 
267													<span class="fab fa-facebook-f"> 
268														<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Facebook')}</span> 
269													</span> 
270												</a> 
271											</li> 
272										</#if> 
273										<#if validator.isNotNull(RedesSociales.Twitter.getData())> 
274											<#assign linkURL = RedesSociales.Twitter.data/> 
275												 
276												<#if !stringUtil.startsWith(linkURL, "http")> 
277													<#assign linkURL = "https://${RedesSociales.Twitter.data}"/> 
278												</#if> 
279											<li class="list-inline-item item twitter"> 
280												<a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Twitter')}" onclick="this.target='_blank'"> 
281													<span class="fab fa-twitter"> 
282														<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Twitter')}</span> 
283													</span> 
284												</a> 
285											</li> 
286										</#if> 
287										<#if validator.isNotNull(RedesSociales.Instagram.getData())> 
288											 
289											<#if RedesSociales.Instagram.data?has_content> 
290												<#assign linkURL = RedesSociales.Instagram.data/> 
291												 
292												<#if !stringUtil.startsWith(linkURL, "http")> 
293													<#assign linkURL = "https://${RedesSociales.Instagram.data}"/> 
294												</#if> 
295												<li class="list-inline-item item instagram"> 
296													<a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Instagram')}" onclick="this.target='_blank'"> 
297														<span class="fab fa-instagram"> 
298															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Instagram')}</span> 
299														</span> 
300													</a> 
301												</li> 
302											</#if> 
303										</#if> 
304										<#if validator.isNotNull(RedesSociales.Youtube.getData())> 
305											<#assign linkURL = RedesSociales.Youtube.data/> 
306												 
307												<#if !stringUtil.startsWith(linkURL, "http")> 
308													<#assign linkURL = "https://${RedesSociales.Youtube.data}"/> 
309												</#if> 
310											<li class="list-inline-item item youtube"> 
311												<a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Youtube')}" onclick="this.target='_blank'"> 
312													<span class="fab fa-youtube"> 
313														<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Youtube')}</span> 
314													</span> 
315												</a> 
316											</li> 
317										</#if> 
318										<#if validator.isNotNull(RedesSociales.Linkedin.getData())> 
319											<#if RedesSociales.Linkedin.data?has_content> 
320												<#assign linkURL = RedesSociales.Linkedin.data/> 
321												 
322												<#if !stringUtil.startsWith(linkURL, "http")> 
323													<#assign linkURL = "https://${RedesSociales.Linkedin.data}"/> 
324												</#if> 
325												<li class="list-inline-item item linkedin"> 
326													<a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Linkedin')}" onclick="this.target='_blank'"> 
327														<span class="fab fa-linkedin"> 
328															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Linkedin')}</span> 
329														</span> 
330													</a> 
331												</li> 
332											</#if> 
333										</#if> 
334										<#if validator.isNotNull(RedesSociales.TikTok.getData())> 
335											<#if RedesSociales.TikTok.data?has_content> 
336												<#assign linkURL = RedesSociales.TikTok.data/> 
337												 
338												<#if !stringUtil.startsWith(linkURL, "http")> 
339													<#assign linkURL = "https://${RedesSociales.TikTok.data}"/> 
340												</#if> 
341												<li class="list-inline-item item tiktok"> 
342													<a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Tiktok')}" onclick="this.target='_blank'"> 
343														<span class="fab fa-tiktok"> 
344															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Tiktok')}</span> 
345														</span> 
346													</a> 
347												</li> 
348											</#if> 
349										</#if> 
350										<#if validator.isNotNull(RedesSociales.Pinterest.getData())> 
351											<#assign linkURL = RedesSociales.Pinterest.data/> 
352												 
353												<#if !stringUtil.startsWith(linkURL, "http")> 
354													<#assign linkURL = "https://${RedesSociales.Pinterest.data}"/> 
355												</#if> 
356											<li class="list-inline-item item pinterest"> 
357												<a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Pinterest')}" onclick="this.target='_blank'"> 
358													<span class="fab fa-pinterest-p"> 
359														<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Pinterest')}</span> 
360													</span> 
361												</a> 
362											</li> 
363										</#if> 
364									</ul> 
365								</div> 
366							</div> 
367						</#if> 
368					</div> 
369				</#if> 
370			</div>	 
371            </div> 
372		</#if> 
373	</div> 
374</article>