Trapézistes sur la crête des vagues
Le surf est arrivé sur la Côte Basque dans les années 1950. Depuis lors, les vagues de Biscaye sont devenues une attraction touristique pour les surfeurs du monde entier.
En Biscaye, vous trouverez des plages et des vagues adaptées à tous les types de surfeurs. Par exemple, les plages de Bakio, Arrigunaga, Arriatera-Atxabiribil (Sopela) offrent les vagues les plus appropriées pour les débutants.
Pendant ce temps, à Sopela, la plage de Barinatxe, connue sous le nom de La Sauvage, il y a la plus dure et la plus changeante des vagues. Dans les falaises de La Galea (Getxo) vous pouvez observer des vagues de plus de six mètres et les vagues de la plage de Meñakoz, à Barrika ont un grand succès dans le monde entier.
La plus connue de nos vagues est celle de Mundaka, la vague gauche qui est dans les rêves de tout surfeur. Cette belle vague, de renommée internationale, traverse les eaux de Laida à Mundaka et mesure environ quatre mètres de haut et 400 mètres de large.

Le long de la Côte de Biscaye
150 kilomètres de côte et un sans fin de possibilités
The following has evaluated to null or missing: ==> getFileEntry(documento4,groupIdAsLong) [in template "1369164#1369202#1381196" at line 664, column 94] ---- Tip: If the failing expression is known to be 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: #assign fileEntry = getFileEntry(docu... [in template "1369164#1369202#1381196" at line 664, column 73] ----
1<#-- SERVICIOS -->
2<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
3
4<#assign searcher = serviceLocator.findService("net.iytu.bizkaia.turismo.filterservices.service.BizkaiaTurismoFilterService")>
5
6<#assign ddmTemplateLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMTemplateLocalService")>
7
8<#assign dynamicQueryFactoryUtil = serviceLocator.findService("com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil")>
9<#assign propertyFactoryUtil = staticUtil["com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil"]>
10
11<#assign urlEncoder = staticUtil["java.net.URLEncoder"]>
12
13<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
14
15<#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") >
16
17<#assign textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"]>
18
19<#assign assetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryPropertyLocalService")>
20
21<#-- servicios related asset subhome -->
22<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
23
24<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
25<#assign journalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")>
26
27
28<#-- VARIABLES -->
29<#assign articleId = .vars['reserved-article-id'].data >
30<#if request?has_content>
31 <#assign portletNamespace = request['theme-display']['portlet-display']['id'] + '_' >
32 <#-- <#assign completeCurrentUrl = urlEncoder.encode((request["attributes"]["CURRENT_COMPLETE_URL"])?string?split("?")[0]?string, "UTF-8")> -->
33 <#assign completeCurrentUrl = urlEncoder.encode((themeDisplay.getPortalURL()+themeDisplay.getURLCurrent())?string?split("?")[0]?string, "UTF-8")>
34<#else>
35 <#assign portletNamespace = articleId + '_'>
36 <#assign completeCurrentUrl = themeDisplay.getPortalURL()>
37</#if>
38
39<#assign articleTitle = .vars['reserved-article-title'].data >
40
41<#assign encodedTitle = urlEncoder.encode(articleTitle, "UTF-8")>
42
43<#assign themeDisplay = serviceContext.getThemeDisplay() />
44<#assign languageId = themeDisplay.getLanguageId() >
45<#assign layout = themeDisplay.getLayout() />
46
47<#assign vocabularyCategories = themeDisplay.getThemeSetting("vocabulary-id") >
48
49<#-- obtener subhome enlazada como related assets -->
50<#assign journalArticleClassName = "com.liferay.journal.model.JournalArticle">
51
52<#assign introSubhomeStructureId = themeDisplay.getThemeSetting("structure-introsubhome-id") >
53
54<#assign reportajeArticle = journalArticleLocalService.getArticle(groupId, articleId) >
55<#assign reportajeEntry = assetEntryLocalService.getEntry(journalArticleClassName, reportajeArticle.getResourcePrimKey()) >
56
57<#-- recoger título, entradilla y color del contenido subhome relacionado-->
58<#assign assetEntryQuery = getAssetEntryQuery(reportajeEntry.getClassNameId(), getterUtil.getLong(introSubhomeStructureId), reportajeEntry.getEntryId(), "publishDate", "ASC")>
59<#assign subhomeEntries = assetEntryLocalService.getEntries(assetEntryQuery)>
60
61<#assign colorSubhome ="#00e78d">
62<#assign tituloSubhome = "">
63<#assign entradillaSubhome ="">
64
65<#if 1 == subhomeEntries?size>
66 <#list subhomeEntries as e>
67 <#assign journalArticleResource = journalArticleResourceLocalService.fetchJournalArticleResource(getterUtil.getLong(e.getClassPK())) >
68 <#assign renderer = e.getAssetRenderer()>
69 <#assign subhomeArticle = renderer.getArticle() >
70 <#assign document = saxReaderUtil.read(subhomeArticle.getContentByLocale(locale)) >
71 <#assign rootElement = document.getRootElement() >
72 <#assign tituloSubhome = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElement).getStringValue() >
73 <#assign entradillaSubhome = saxReaderUtil.createXPath("dynamic-element[@name='entradilla']/dynamic-content").selectSingleNode(rootElement).getStringValue() >
74 <#assign colorSubhome = saxReaderUtil.createXPath("dynamic-element[@name='color']/dynamic-content").selectSingleNode(rootElement).getStringValue() >
75 </#list>
76</#if>
77
78<#-- recoger eventos relacionados-->
79<#assign eventStructureId = themeDisplay.getThemeSetting("structure-event-id") >
80
81<#assign assetEntryQuery = getAssetEntryQuery(reportajeEntry.getClassNameId(), getterUtil.getLong(eventStructureId), "0", "publishDate", "ASC")>
82<#assign eventEntries = assetEntryLocalService.getEntries(assetEntryQuery)>
83
84<#if searcher?exists>
85 <#assign eventFinalEntries = searcher.getDestacadoEventoByLocale(eventEntries, locale)>
86 <!-- eventFinalEntries?size = ${eventFinalEntries?size} -->
87<#else>
88 <#assign eventFinalEntries = "">
89 <!-- no hay eventFinalEntries -->
90</#if>
91
92<#-- recoger descuentos relacionados-->
93<#assign descuentoStructureId = themeDisplay.getThemeSetting("structure-descuento-id") >
94<#assign assetEntryQuery = getAssetEntryQuery(reportajeEntry.getClassNameId(), getterUtil.getLong(descuentoStructureId), reportajeEntry.getEntryId(), "publishDate", "ASC")>
95<#assign descuentosEntries = assetEntryLocalService.getEntries(assetEntryQuery)>
96
97
98<#if slider.getSiblings()?has_content>
99 <#assign arraySlider=[]>
100 <#list slider.imagenSlider.getSiblings() as cur_img>
101 <#if !validator.equals("",cur_img.data)>
102 <#assign arraySlider = arraySlider + [cur_img.getData()]>
103 </#if>
104 </#list>
105 <#if 0 < arraySlider?size>
106 <section id="HugeSlider" class="huge-slider">
107 <div class="container_fluid">
108 <div class="row">
109 <div class="col-xs-12 col-sm-12 col-md-12 slider-container">
110 <ul class="slider">
111 <#list arraySlider as cur_slide>
112 <li>
113 <div class="imagen_fondo_slider" style="background-image:url('${cur_slide}');"></div>
114 </li>
115 </#list>
116 </ul>
117 </div>
118 </div>
119 </div>
120 </section>
121 <script>
122 $(document).ready(function() {
123 $("#HugeSlider .slider").lightSlider({
124 item: 1,
125 loop: false,
126 keyPress: true,
127 controls:true,
128 pager: false,
129 enableDrag: true,
130 prevHtml: '<span class="sr-only"><@liferay.language key="previous" /></span>',
131 nextHtml: '<span class="sr-only"><@liferay.language key="next" /></span>',
132 responsive : [
133 {
134 breakpoint:993,
135 settings: {
136 pager: true
137 }
138 }
139
140 ]
141 });
142 });
143 </script>
144 </#if>
145 </#if>
146<!-- <div class="container-fluid bgcolor" id="turi-contenedor-anclas"> -->
147<div class="container-fluid bgcolor p-0" id="turi-contenedor-anclas">
148 <div class="container p-0">
149 <div class="row">
150 <div class="col-md-10 col-md-offset-1 visible-md visible-lg">
151 <nav class="anclas">
152 <ul class="nav">
153 <#if !validator.equals("", rutas.parrafoRutas1.data)>
154 <li><a href="#rutas">
155 <#if rutas.tituloAlternativoRutas?? && !validator.equals("", rutas.tituloAlternativoRutas.data)>
156 ${rutas.tituloAlternativoRutas.getData()}
157 <#else>
158 <@liferay.language key="iytu.reportaje.rutas" />
159 </#if>
160 </a></li>
161 </#if>
162 <#if !validator.equals("", comoLlegar.tituloLlegar.data)>
163 <li><a href="#llegar"><@liferay.language key="iytu.reportaje.como-llegar" /></a></li>
164 </#if>
165 <#if !validator.equals("", dondeComer.textoComer.data)>
166 <li><a href="#comer"><@liferay.language key="iytu.reportaje.donde-comer" /></a></li>
167 </#if>
168 <#if !validator.equals("", dondeDormir.textoDormir.data)>
169 <li><a href="#dormir"><@liferay.language key="iytu.reportaje.donde-alojarse" /></a></li>
170 </#if>
171 <li><a href="#sliderEventos"><@liferay.language key="iytu.reportaje.eventos" /></a></li>
172 <li><a href="#bloqueDescuentos"><@liferay.language key="iytu.reportaje.downloads" /></a></li>
173 <li><a href="#lugaresInteres"><@liferay.language key="iytu.reportaje.lugares-interes" /></a></li>
174 </ul>
175 </nav>
176 </div>
177 <div class="col-xs-12 col-sm-12 hidden-md hidden-lg p-0">
178 <nav class="anclas">
179 <div class="bootstrap-select btn-group">
180 <button type="button" class="btn dropdown-toggle btn-default, btn-filtro" data-toggle="dropdown" aria-owns="tab_selector1" aria-expanded="false" id="dropdown_anclas"><@liferay.language key="iytu.reportaje.ir-a" /><span class="bs-caret"><span class="caret"></span></span>
181 </button>
182 <div class="dropdown-menu open">
183 <ul class="dropdown-menu inner nav" id="tab_selector1" aria-expanded="false">
184 <#if !validator.equals("", rutas.parrafoRutas1.data)>
185 <li><a href="#rutas">
186 <#if rutas.tituloAlternativoRutas?? && !validator.equals("", rutas.tituloAlternativoRutas.data)>
187 ${rutas.tituloAlternativoRutas.getData()}
188 <#else>
189 <@liferay.language key="iytu.reportaje.rutas" />
190 </#if>
191 </a></li>
192 </#if>
193 <#if !validator.equals("", comoLlegar.tituloLlegar.data)>
194 <li><a href="#llegar"><@liferay.language key="iytu.reportaje.como-llegar" /></a></li>
195 </#if>
196 <#if !validator.equals("", dondeComer.textoComer.data)>
197 <li><a href="#comer"><@liferay.language key="iytu.reportaje.donde-comer" /></a></li>
198 </#if>
199 <#if !validator.equals("", dondeDormir.textoDormir.data)>
200 <li><a href="#dormir"><@liferay.language key="iytu.reportaje.donde-alojarse" /></a></li>
201 </#if>
202 <li><a href="#sliderEventos"><@liferay.language key="iytu.reportaje.eventos" /></a></li>
203 <li><a href="#bloqueDescuentos"><@liferay.language key="iytu.reportaje.downloads" /></a></li>
204 <li><a href="#lugaresInteres"><@liferay.language key="iytu.reportaje.lugares-interes" /></a></li>
205 </ul>
206 </div>
207 </div>
208 </nav>
209</div>
210 </div>
211 </div>
212</div>
213
214 <div class="container-fluid reportaje">
215 <div class="container">
216 <div class="row">
217
218 <div class="col-sm-10 col-sm-offset-1 col-md-7 col-md-offset-1">
219 <div class="row">
220 <div class="col-md-12 reportaje_principal">
221 <hr class="cuadrado bgcolor">
222 <div class="textorepo">
223 <#if contenidoPrincipal.getSiblings()?has_content>
224 <#list contenidoPrincipal.getSiblings() as contenidoPpal>
225 <p class="entradilla">${contenidoPpal.textoDestacado.getData()}</p>
226
227 ${contenidoPpal.contenidoGeneral.getData()}
228 <#if (!validator.equals("", contenidoPpal.imagenPrincipal.data) || !validator.equals("", contenidoPpal.videoPrincipal.data) || !validator.equals("", contenidoPpal.linkVideoExterno.data))>
229 <div>
230 <div class="turismo_video embed-responsive embed-responsive-16by9">
231 <#if !validator.equals("", contenidoPpal.imagenPrincipal.data)>
232 <img class="embed-responsive-item" src="${contenidoPpal.imagenPrincipal.getData()}" alt="">
233 <#elseif !validator.equals("", contenidoPpal.videoPrincipal.data)>
234 <video class="embed-responsive-item" controls="" preload="none" src="contenidoPpal.videoPrincipal.getData()"></video>
235 <#elseif !validator.equals("", contenidoPpal.linkVideoExterno.data)>
236 <video class="embed-responsive-item" controls="" preload="none" src="${contenidoPpal.linkVideoExterno.getData()}"></video>
237 </#if>
238 </div>
239 <div class="pie_foto"><p>${contenidoPpal.pieFoto.getData()}</p></div>
240 </div>
241 </#if>
242 </#list>
243 </#if>
244 <#if !validator.equals("", rutas.parrafoRutas1.data)>
245 <span id="rutas"></span>
246 <#if rutas.tituloAlternativoRutas?? && !validator.equals("", rutas.tituloAlternativoRutas.data)>
247 <h2>${rutas.tituloAlternativoRutas.getData()}</h2>
248 <#else>
249 <h2><@liferay.language key="iytu.reportaje.rutas" /></h2>
250 </#if>
251 <p>${rutas.parrafoRutas1.getData()}</p>
252 </#if>
253 <#if !validator.equals("", rutas.destacadoRutas.data)>
254 <p class="miquote">${rutas.destacadoRutas.getData()}</p>
255 </#if>
256 <#if !validator.equals("", rutas.parrafoRutas2.data)>
257 <p>${rutas.parrafoRutas2.getData()}</p>
258 </#if>
259 <#if !validator.equals("", rutas.contenidoRutas.data)>
260 <p>${rutas.contenidoRutas.getData()}</p>
261 </#if>
262 </div>
263 </div>
264 </div>
265
266
267<#if !validator.equals("",imagenDestacada.data) >
268
269 <div class="row reportaje_foto">
270 <div class="col-md-12">
271 <p><img src="${imagenDestacada.getData()}" alt=""></p>
272 </div>
273 </div>
274
275</#if>
276
277 <div class="row">
278 <div class="col-md-12 reportaje_principal reportaje-separador">
279 <#if !validator.equals("", comoLlegar.tituloLlegar.data)>
280 <div class="textorepo" id="llegar">
281 <h2>${comoLlegar.tituloLlegar.getData()}</h2>
282 <#if !validator.equals("",comoLlegar.textoLlegar.data)>
283 ${comoLlegar.textoLlegar.getData()}
284 </#if>
285 <ul class="lista">
286 <#if !validator.equals("",comoLlegar.trenLlegar.data)>
287 <li class="row m-0">
288 <div class="col-xs-12 col-sm-2 col-md-2 icono">
289 <span class="iytuicon icon-tren" aria-hidden="true"></span>
290 </div>
291 <div class="col-xs-12 col-sm-10 col-md-9">
292 <h3><@liferay.language key="iytu.reportaje.tren" /></h3>
293 <p>${comoLlegar.trenLlegar.getData()}</p>
294 </div>
295 </li>
296 </#if>
297 <#if !validator.equals("",comoLlegar.metroLlegar.data)>
298 <li class="row m-0">
299 <div class="col-xs-12 col-sm-2 col-md-2 icono">
300 <span class="iytuicon icon-metro" aria-hidden="true"></span>
301 </div>
302 <div class="col-xs-12 col-sm-10 col-md-9">
303 <h3><@liferay.language key="iytu.reportaje.metro" /></h3>
304 <p>${comoLlegar.metroLlegar.getData()}</p>
305 </div>
306 </li>
307 </#if>
308 <#if !validator.equals("",comoLlegar.tranviaLlegar.data)>
309 <li class="row m-0">
310 <div class="col-xs-12 col-sm-2 col-md-2 icono">
311 <span class="iytuicon icon-tranvia" aria-hidden="true"></span>
312 </div>
313 <div class="col-xs-12 col-sm-10 col-md-9">
314 <h3><@liferay.language key="iytu.reportaje.tranvia" /></h3>
315 <p>${comoLlegar.tranviaLlegar.getData()}</p>
316 </div>
317 </li>
318 </#if>
319 <#if !validator.equals("",comoLlegar.busLlegar.data)>
320 <li class="row m-0">
321 <div class="col-xs-12 col-sm-2 col-md-2 icono">
322 <span class="iytuicon icon-bus" aria-hidden="true"></span>
323 </div>
324 <div class="col-xs-12 col-sm-10 col-md-9">
325 <h3><@liferay.language key="iytu.reportaje.autobus" /></h3>
326 <p>${comoLlegar.busLlegar.getData()}</p>
327 </div>
328 </li>
329 </#if>
330 <#if !validator.equals("",comoLlegar.cocheLlegar.data)>
331 <li class="row m-0">
332 <div class="col-xs-12 col-sm-2 col-md-2 icono">
333 <span class="iytuicon icon-coche" aria-hidden="true"></span>
334 </div>
335 <div class="col-xs-12 col-sm-10 col-md-9">
336 <h3><@liferay.language key="iytu.reportaje.coche" /></h3>
337 <p>${comoLlegar.cocheLlegar.getData()}</p>
338 </div>
339 </li>
340 </#if>
341 <#if !validator.equals("",comoLlegar.biciLlegar.data)>
342 <li class="row m-0">
343 <div class="col-xs-12 col-sm-2 col-md-2 icono">
344 <span class="iytuicon icon-bici" aria-hidden="true"></span>
345 </div>
346 <div class="col-xs-12 col-sm-10 col-md-9">
347 <h3><@liferay.language key="iytu.reportaje.bicicleta" /></h3>
348 <p>${comoLlegar.biciLlegar.getData()}</p>
349 </div>
350 </li>
351 </#if>
352 </ul>
353 <#if !validator.equals("",comoLlegar.latitud.data) && !validator.equals("",comoLlegar.longitud.data)>
354 <div id="mapa"></div>
355 <@mapScript />
356 </#if>
357 </div>
358 </#if>
359 <#if !stringUtil.equalsIgnoreCase("", dondeComer.textoComer.data)>
360 <#if !stringUtil.equalsIgnoreCase("", dondeComer.imagenComer.data)>
361 <div class="textorepo-auxiliar" id="comer">
362 <div class="textorepo-auxiliar-imagen">
363 <p><img src="${dondeComer.imagenComer.getData()}" alt=""/>
364 <span class="categoria"><@liferay.language key="iytu.reportaje.gastronomia" /></span></p>
365 <h2 class="titulo"><@liferay.language key="iytu.reportaje.donde-comer" /></h2>
366 </div>
367 <div class="textorepo-auxiliar-texto">
368 ${dondeComer.textoComer.getData()}
369 </div>
370 </div>
371 <#else>
372 <div class="textorepo-auxiliar" id="comer">
373 <div class="textorepo-auxiliar-imagen sin-img">
374 <p><span class="categoria"><@liferay.language key="iytu.reportaje.gastronomia" /></span></p>
375 <h2 class="titulo"><@liferay.language key="iytu.reportaje.donde-comer" /></h2>
376 </div>
377 <div class="textorepo-auxiliar-texto">
378 ${dondeComer.textoComer.getData()}
379 </div>
380 </div>
381 </#if>
382 </#if>
383 <#if !stringUtil.equalsIgnoreCase("", dondeDormir.textoDormir.data)>
384 <#if !stringUtil.equalsIgnoreCase("", dondeDormir.imagenDormir.data)>
385 <div class="textorepo-auxiliar" id="dormir">
386 <div class="textorepo-auxiliar-imagen">
387 <p><img src="${dondeDormir.imagenDormir.getData()}" alt=""/>
388 <span class="categoria"><@liferay.language key="iytu.reportaje.alojamiento" /></span></p>
389 <h2 class="titulo"><@liferay.language key="iytu.reportaje.donde-dormir" /></h2>
390 </div>
391 <div class="textorepo-auxiliar-texto">
392 ${dondeDormir.textoDormir.getData()}
393 </div>
394 </div>
395 <#else>
396 <div class="textorepo-auxiliar" id="dormir">
397 <div class="textorepo-auxiliar-imagen sin-img">
398 <p><span class="categoria"><@liferay.language key="iytu.reportaje.alojamiento" /></span></p>
399 <h2 class="titulo"><@liferay.language key="iytu.reportaje.donde-dormir" /></h2>
400 </div>
401 <div class="textorepo-auxiliar-texto">
402 ${dondeDormir.textoDormir.getData()}
403 </div>
404 </div>
405 </#if>
406 </#if>
407 </div>
408 </div>
409</div>
410
411<div class="col-sm-12 col-md-3 col-md-offset-1 reportaje_secundario">
412 <div class="reportaje_sidebar">
413 <ul class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
414 <li class="panel panel-default">
415 <div class="panel-heading" role="tab" id="heading1">
416 <h2 class="panel-title">
417 <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse1" aria-expanded="false" aria-controls="collapse1" class="collapsed recomendaciones">
418 <@liferay.language key="iytu.reportaje.info-practica" />
419 <span class="icon-flecha_acordeon"></span>
420 </a>
421 </h2>
422 </div>
423 <div id="collapse1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading1">
424 <div class="panel-body">
425 ${appendTag(menuDesplegable.infoPractica.textoPractica.getData())}
426 <ul>
427 <#if !validator.equals("", menuDesplegable.infoPractica.horarioPractica.data)>
428 <li class="row m-0">
429 <div class="col-xs-2 col-sm-1 col-md-1 icono">
430 <span class="iytuicon icon-horario" aria-hidden="true"></span>
431 </div>
432 <div class="col-xs-9 col-sm-10 col-md-10">
433 <h3><@liferay.language key="iytu.reportaje.horario" /></h3>
434 ${appendTag(menuDesplegable.infoPractica.horarioPractica.getData())}
435 </div>
436 </li>
437 </#if>
438 <#if !validator.equals("", menuDesplegable.infoPractica.precioPractica.data)>
439 <li class="row m-0">
440 <div class="col-xs-2 col-sm-1 col-md-1 icono">
441 <span class="iytuicon icon-entradas" aria-hidden="true"></span>
442 </div>
443 <div class="col-xs-9 col-sm-10 col-md-10">
444 <h3><@liferay.language key="iytu.reportaje.precio" /></h3>
445 ${appendTag(menuDesplegable.infoPractica.precioPractica.getData())}
446 </div>
447 </li>
448 </#if>
449 <#if !validator.equals("", menuDesplegable.infoPractica.localizacionPractica.data)>
450 <li class="row m-0">
451 <div class="col-xs-2 col-sm-1 col-md-1 icono">
452 <span class="iytuicon icon-location" aria-hidden="true"></span>
453 </div>
454 <div class="col-xs-9 col-sm-10 col-md-10">
455 <h3><@liferay.language key="iytu.reportaje.localizacion" /></h3>
456 ${appendTag(menuDesplegable.infoPractica.localizacionPractica.getData())}
457 </div>
458 </li>
459 </#if>
460 </ul>
461 </div>
462 </div>
463 </li>
464 <#if !validator.equals("", menuDesplegable.recomendaciones.data)>
465 <li class="panel panel-default">
466 <div class="panel-heading" role="tab" id="heading2">
467 <h2 class="panel-title">
468 <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse2" aria-expanded="false" aria-controls="collapse2" class="collapsed recomendaciones">
469 <@liferay.language key="iytu.reportaje.recomendaciones" />
470 <span class="icon-flecha_acordeon"></span>
471 </a></h2>
472 </div>
473 <div id="collapse2" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading2">
474 <div class="panel-body">
475 ${appendTag(menuDesplegable.recomendaciones.getData())}
476 </div>
477 </div>
478 </li>
479 </#if>
480 <#if menuDesplegable.DesplegablesOpcionales.getSiblings()?has_content>
481 <#assign contador = 3>
482 <#list menuDesplegable.DesplegablesOpcionales.getSiblings() as cur_menu>
483 <#if !validator.equals("",cur_menu.tituloDesplegable.data)>
484 <li class="panel panel-default">
485 <div class="panel-heading" role="tab" id="heading${contador}">
486 <h2 class="panel-title">
487 <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse${contador}" aria-expanded="false" aria-controls="collapse${contador}" class="collapsed recomendaciones">
488 ${cur_menu.tituloDesplegable.getData()}
489 <span class="icon-flecha_acordeon"></span>
490 </a></h2>
491 </div>
492 <#if !validator.equals("",cur_menu.textoDesplegable.data)>
493 <div id="collapse${contador}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading${contador}">
494 <div class="panel-body">
495 ${appendTag(cur_menu.textoDesplegable.getData())}
496 </div>
497 </div>
498 </#if>
499 </li>
500 <#assign contador = contador + 1>
501 </#if>
502 </#list>
503 </#if>
504 <#if !validator.equals("", menuDesplegable.urlEntradas.data)>
505 <li class="panel panel-default">
506 <div class="panel-heading entradas" role="tab" id="heading6">
507 <p class="panel-title">
508 <a href="${menuDesplegable.urlEntradas.getData()}" class="entradas bgcolor" target="_blank" title="<@liferay.language key='opens-new-window'/>">
509
510 <@liferay.language key="iytu.reportaje.entradas" /> <span class="iytuicon icon-entradas"></span>
511 </a>
512 </p>
513 </div>
514
515
516 </li>
517 </#if>
518 <li class="panel panel-default">
519 <div class="panel-heading compartir" role="tab" id="heading7">
520 <h2 class="panel-title">
521 <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse7" aria-expanded="false" aria-controls="collapse7" class="compartir">
522 <@liferay.language key="iytu.reportaje.compartir" />
523 <span class="iytuicon icon-share"></span>
524 </a>
525 </h2>
526 </div>
527 <div id="collapse7" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading7">
528 <div class="panel-body blanco">
529 <ul class="redes-sociales">
530 <li class="mt-3"> <a href="https://www.facebook.com/sharer/sharer.php?u=${completeCurrentUrl}" target="_blank" title="<@liferay.language key='opens-new-window' />" > <span class="iytuicon circulo icon-facebook" aria-hidden="true"></span> <span class="sr-only"><@liferay.language key="iytu.reportaje.facebook" /></span> </a> </li>
531 <li class="mt-3"> <a href="https://twitter.com/intent/tweet?url=${completeCurrentUrl}&text=${encodedTitle}" target="_blank" title="<@liferay.language key='opens-new-window' />" data-size="large"><span class="iytuicon circulo icon-twitter" aria-hidden="true"></span> <span class="sr-only"><@liferay.language key="iytu.reportaje.twitter" /></span> </a> </li>
532 <li class="mt-3"> <a href="whatsapp://send?text=${completeCurrentUrl}" target="_blank" title="<@liferay.language key='opens-new-window' />" > <span class="iytuicon icon-whatsaap"></span> <span class="sr-only"><@liferay.language key="iytu.reportaje.whatsapp" /></span> </a> </li>
533 <li class="mt-3"> <a href="mailto:?Subject=${articleTitle}&Body=${articleTitle} ${completeCurrentUrl}" > <span class="iytuicon circulo icon-mail"></span> <span class="sr-only"><@liferay.language key="iytu.reportaje.email" /></span> </a> </li>
534 </ul>
535 </div>
536 </div>
537 </li>
538 </ul>
539 </div>
540</div>
541 </div>
542 </div>
543<#-- EVENTOS -->
544<#-- ******************* DE MOMENTO IGNORAR EL CHECK DE MOSTRAR EVENTOS, PONERLOS SIEMPRE ****************
545
546<#if eventos?? && eventos.mostrarEventos?? && stringUtil.equalsIgnoreCase("true", eventos.mostrarEventos.data) && 0 lt eventFinalEntries?size>
547-->
548 <#if 0 lt eventFinalEntries?size>
549 <section id="sliderEventos" class="slider-eventos">
550
551 <div class="slider-container">
552 <ul class="slider">
553 <#list eventFinalEntries as curEntry>
554 <#assign renderer = curEntry.getAssetRenderer() >
555 <#assign journalArticle = renderer.getArticle() >
556
557 <#--
558 <#assign templateKey = getTemplateKey("iytu-evento-slider") >
559 -->
560 <#assign templateKey = "1520787" >
561
562 <#assign journalArticleDisplay = journalContentUtil.getDisplay(journalArticle.getGroupId(), journalArticle.getArticleId(), templateKey, "view", languageId, themeDisplay)>
563
564 <li>${journalArticleDisplay.getContent()}</li>
565 </#list>
566 </ul>
567 </div>
568 </section>
569
570
571
572 <script>
573 $(document).ready(function() {
574 $("#sliderEventos .slider").lightSlider({
575 item: 1,
576 loop: false,
577 keyPress: true,
578 controls:true,
579 pager: false,
580 enableDrag: true,
581 prevHtml: '<span class="sr-only"><@liferay.language key="previous" /></span>',
582 nextHtml: '<span class="sr-only"><@liferay.language key="next" /></span>',
583 responsive : [
584 {
585 breakpoint:993,
586 settings: {
587 pager: true
588 }
589 }
590 ]
591 });
592 });
593 </script>
594 <#else>
595 <div id="sliderEventos"></div>
596</#if>
597
598<#-- DESCUENTOS -->
599
600<#if 0 lt descuentosEntries?size>
601 <#list descuentosEntries as curEntry>
602 <#assign renderer = curEntry.getAssetRenderer() >
603 <#assign className = renderer.getClassName() >
604 <#assign journalArticle = renderer.getArticle() >
605 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) >
606 <#assign rootElement = document.getRootElement() >
607
608 <#assign documento1 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_1']/dynamic-element[@name='documento1']").selectSingleNode(rootElement).getStringValue()?trim/>
609 <#assign documento2 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_2']/dynamic-element[@name='documento2']").selectSingleNode(rootElement).getStringValue()?trim/>
610 <#assign documento3 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_3']/dynamic-element[@name='documento3']").selectSingleNode(rootElement).getStringValue()?trim/>
611 <#assign documento4 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_4']/dynamic-element[@name='documento4']").selectSingleNode(rootElement).getStringValue()?trim/>
612
613 <#assign titulo1 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_1']/dynamic-element[@name='titulo1']").selectSingleNode(rootElement).getStringValue()/>
614 <#assign titulo2 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_2']/dynamic-element[@name='titulo2']").selectSingleNode(rootElement).getStringValue()/>
615 <#assign titulo3 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_3']/dynamic-element[@name='titulo3']").selectSingleNode(rootElement).getStringValue()/>
616 <#assign titulo4 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_4']/dynamic-element[@name='titulo4']").selectSingleNode(rootElement).getStringValue()/>
617 <#assign groupIdAsLong = getterUtil.getLong(groupId)/>
618
619 <div id="bloqueDescuentos">
620 <div class="container-fluid descuentos">
621 <div class="container p-0">
622 <div class="row mr-0">
623 <div class="col-xs-12 col-xs-offset-0 col-sm-6 col-sm-offset-1 col-md-5 col-md-offset-1 p-0 contenido">
624 <p class="categoria">
625 <@liferay.language key="iytu.descuentos.descuentos" />
626 </p>
627 <h3><@liferay.language key="iytu.descuentos.dtosBBCard" /></h3>
628 <a href="/bilbao-bizkaia-card" class="boton blanco"><@liferay.language key="iytu.descuentos.comprar" /></a>
629 </div>
630
631 <div class="col-xs-12 col-md-6 descargas">
632 <ul class="row">
633 <#if documento1?? && documento1?length != 0>
634 <#assign fileEntry = getFileEntry(documento1,groupIdAsLong)/>
635 <#assign size = textFormatter.formatStorageSize(fileEntry.size, locale) />
636 <li class="col-xxs-6 col-xs-6">
637 <a href="${documento1}" target="_blank" title="<@liferay.language key='opens-new-window' />">
638 <h4 class="colour">${titulo1}</h4>
639 <p class="archivoDescarga"><span class="iytuicon icon-descargar"></span> <span><@liferay.language key="download" /></span> ${size}</p>
640 </a>
641 </li>
642 </#if>
643 <#if documento2?? && documento2?length != 0>
644 <#assign fileEntry = getFileEntry(documento2,groupIdAsLong) >
645 <#assign size = textFormatter.formatStorageSize(fileEntry.size, locale) >
646 <li class="col-xxs-6 col-xs-6">
647 <a href="${documento2}" target="_blank" title="<@liferay.language key='opens-new-window' />">
648 <h4 class="colour">${titulo2}</h4>
649 <p class="archivoDescarga"><span class="iytuicon icon-descargar"></span> <span><@liferay.language key="download"/></span> ${size}</p>
650 </a>
651 </li>
652 </#if>
653 <#if documento3?? && documento3?length != 0>
654 <#assign fileEntry = getFileEntry(documento3,groupIdAsLong) >
655 <#assign size = textFormatter.formatStorageSize(fileEntry.size, locale) >
656 <li class="col-xxs-6 col-xs-6">
657 <a href="${documento3}" target="_blank" title="<@liferay.language key='opens-new-window' />">
658 <h4 class="colour">${titulo3}</h4>
659 <p class="archivoDescarga"><span class="iytuicon icon-descargar"></span> <span><@liferay.language key="download" /></span> ${size}</p>
660 </a>
661 </li>
662 </#if>
663 <#if documento4?? && documento4?length != 0>
664 <#assign fileEntry = getFileEntry(documento4,groupIdAsLong) >
665 <#assign size = textFormatter.formatStorageSize(fileEntry.size, locale) >
666 <li class="col-xxs-6 col-xs-6">
667 <a href="${documento4}" target="_blank" title="<@liferay.language key='opens-new-window' />">
668 <h4 class="colour">${titulo4}</h4>
669 <p class="archivoDescarga"><span class="iytuicon icon-descargar"></span> <span><@liferay.language key="download" /></span> ${size}</p>
670 </a>
671 </li>
672 </#if>
673 </ul>
674 </div>
675 </div>
676
677 </div>
678 </div>
679 </div>
680
681 </#list>
682</#if>
683<span id="lugaresInteres"></span>
684
685<script>
686$( document ).ready(function() {
687
688 /*** animación anclas en menú con fondo color ***/
689
690 $('#turi-contenedor-anclas .visible-md a').click(function(e) {
691 e.preventDefault();
692 var $target = $(this.hash);
693 var destino = this.hash;
694 $target = $target.length && $target || $(this.hash);
695 if ($target.length) {
696 var targetOffset = $target.offset().top;
697 var topSpace = $('#heading').height() + $('#turi-contenedor-anclas').height();
698 targetOffset = targetOffset - topSpace;
699 $('html,body').animate({scrollTop: targetOffset}, 1500);
700 }
701
702 });
703
704 $('#turi-contenedor-anclas .hidden-md a').click(function(e) {
705 e.preventDefault();
706 var $target = $(this.hash);
707 var destino = this.hash;
708 $target = $target.length && $target || $(this.hash);
709 if ($target.length) {
710 var targetOffset = $target.offset().top;
711 var topSpace = $('#heading').height() + $('#turi-contenedor-anclas button').height() + 40;
712 targetOffset = targetOffset - topSpace;
713 $('html,body').animate({scrollTop: targetOffset}, 1500);
714 }
715
716 });
717
718 /*** scroll spy para el menú ***/
719 $('body').scrollspy({
720 target: '.anclas',
721 offset: function() {
722 var topSpace = $('#heading').height() + $('#turi-contenedor-anclas').height() + 20;
723 return topSpace;
724 }()
725 })
726
727 /****** scroll to fixed de menú de anclas *****/
728 if ($(window).width() > 992) {
729
730 $('#turi-contenedor-anclas').scrollToFixed({
731 marginTop: function() {
732 var marginTop = $('#heading').height();
733 return marginTop;
734 },
735 limit: function() {
736 var limit = $('#lugaresInteres').offset().top;
737 return limit;
738 },
739 removeOffsets: true,
740 preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); },
741 preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); }
742 });
743 $('.reportaje_secundario').scrollToFixed({
744 marginTop: function() {
745 var marginTop = $(window).height() - $('.reportaje_secundario').outerHeight(true) - 140;
746 if (marginTop >= 0) return 140;
747 return marginTop;
748 },
749 limit: function() {
750 var limit = $('#sliderEventos').offset().top - $('.reportaje_secundario').height() - 135;
751 return limit;
752 },
753 removeOffsets: true,
754 preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); },
755 preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); }
756
757 });
758 $(".reportaje_sidebar .panel-collapse").on("shown.bs.collapse", function () {
759 var myEl = $(this).closest('.panel');
760 $('html, body').animate({
761 scrollTop: $(myEl).offset().top
762 }, 0);
763 $('.reportaje_secundario').trigger('detach.ScrollToFixed');
764 $('.reportaje_secundario').scrollToFixed({
765 marginTop: function() {
766 var marginTop = $(window).height() - $('.reportaje_secundario').outerHeight(true) - 140;
767 if (marginTop >= 0) return 140;
768 return marginTop;
769 },
770 limit: function() {
771 var limit = $('#sliderEventos').offset().top - $('.reportaje_secundario').height() - 135;
772 return limit;
773 },
774 removeOffsets: true,
775 preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); },
776 preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); }
777
778 });
779
780 });
781
782
783 }else{
784 $('#turi-contenedor-anclas').scrollToFixed({
785 marginTop: function() {
786 var marginTop = $('#heading').height();
787 return marginTop;
788 },
789 limit: function() {
790 var limit = $('#lugaresInteres').offset().top;
791 return limit;
792 },
793 removeOffsets: true,
794 preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); },
795 preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); }
796 });
797 $('.reportaje_secundario').scrollToFixed({
798 marginTop: 192,
799 limit: function() {
800 var limit = $('#sliderEventos').offset().top - $('.reportaje_secundario').height() - 135;
801 return limit;
802 },
803 removeOffsets: true,
804 preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); },
805 preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); }
806
807 });
808 $(".reportaje_sidebar .panel-collapse").on("shown.bs.collapse", function () {
809 var myEl = $(this).closest('.panel');
810 $('html, body').animate({
811 scrollTop: $(myEl).offset().top - 192
812 }, 0);
813 });
814 }
815
816 $(window).bind('resize',function(){
817 clearTimeout(this.timeout);
818 this.timeout = setTimeout(function () {
819
820 var windowWidth = $(window).width();
821 if(windowWidth > 992){
822
823
824 $('#turi-contenedor-anclas').trigger('detach.ScrollToFixed');
825 $('#turi-contenedor-anclas').scrollToFixed({
826 marginTop: function() {
827 var marginTop = $('#heading').height();
828 return marginTop;
829 },
830 limit: function() {
831 var limit = $('#lugaresInteres').offset().top;
832 return limit;
833 },
834 removeOffsets: true,
835 preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); },
836 preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); }
837 });
838 $('.reportaje_secundario').trigger('detach.ScrollToFixed');
839 $('.reportaje_secundario').scrollToFixed({
840 marginTop: function() {
841 var marginTop = $(window).height() - $('.reportaje_secundario').outerHeight(true) - 140;
842 if (marginTop >= 0) return 140;
843 return marginTop;
844 },
845 limit: function() {
846 var limit = $('#sliderEventos').offset().top - $('.reportaje_secundario').height() - 135;
847 return limit;
848 },
849 removeOffsets: true,
850 preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); },
851 preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); }
852
853 });
854 $(".reportaje_sidebar .panel-collapse").on("shown.bs.collapse", function () {
855 var myEl = $(this).closest('.panel');
856 $('html, body').animate({
857 scrollTop: $(myEl).offset().top
858 }, 0);
859 $('.reportaje_secundario').trigger('detach.ScrollToFixed');
860 $('.reportaje_secundario').scrollToFixed({
861 marginTop: function() {
862 var marginTop = $(window).height() - $('.reportaje_secundario').outerHeight(true) - 140;
863 if (marginTop >= 0) return 140;
864 return marginTop;
865 },
866 limit: function() {
867 var limit = $('#sliderEventos').offset().top - $('.reportaje_secundario').height() - 135;
868 return limit;
869 },
870 removeOffsets: true,
871 preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); },
872 preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); }
873
874 });
875
876 });
877
878
879
880
881
882
883 }else{
884
885
886 $('#turi-contenedor-anclas').trigger('detach.ScrollToFixed');
887 $('#turi-contenedor-anclas').scrollToFixed({
888 marginTop: function() {
889 var marginTop = $('#heading').height();
890 return marginTop;
891 },
892 limit: function() {
893 var limit = $('#lugaresInteres').offset().top;
894 return limit;
895 },
896 removeOffsets: true,
897 preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); },
898 preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); }
899 });
900 $('.reportaje_secundario').trigger('detach.ScrollToFixed');
901 $('.reportaje_secundario').scrollToFixed({
902 marginTop: 192,
903 limit: function() {
904 var limit = $('#sliderEventos').offset().top - $('.reportaje_secundario').height() - 135;
905 return limit;
906 },
907 removeOffsets: true,
908 preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); },
909 preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); }
910
911 });
912 $(".reportaje_sidebar .panel-collapse").on("shown.bs.collapse", function () {
913 var myEl = $(this).closest('.panel');
914 $('html, body').animate({
915 scrollTop: $(myEl).offset().top - 192
916 }, 0);
917 });
918
919 }
920
921
922
923 }, 0);
924
925 });
926
927
928});
929</script>
930<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBMctVq13ErDz69AxaIHMb93TR4DA4qioU&callback=initMap"></script>
931
932<#-- MACROS -->
933<#macro mapScript >
934 <script>
935 function initMap(){
936
937 var latitude = ${comoLlegar.latitud.getData()};
938 var longitude = ${comoLlegar.longitud.getData()};
939 var centroMapa = {lat: latitude, lng: longitude};
940 var mapOptions = {
941 zoom: 12,
942 center: centroMapa,
943 disableDoubleClickZoom: false,
944 draggable: true,
945 zoomControl:true,
946 mapTypeControl: false,
947 rotateControl: false,
948 scaleControl: true,
949 scrollwheel: false,
950 streetViewControl: false
951 };
952 var map = new google.maps.Map(document.getElementById("mapa"), mapOptions);
953 var marker = new google.maps.Marker({
954 position: centroMapa,
955 map: map
956 });
957 }
958 </script>
959</#macro>
960<#-- FUNCIONES -->
961<#function getAssetEntryQuery classNameId structureId linkedAssetEntryId order orderType>
962 <#assign assetEntryQuery = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery") >
963
964 <#assign classNameIds = [classNameId] >
965 ${assetEntryQuery.setClassNameIds(classNameIds)}
966
967 <#if !stringUtil.equalsIgnoreCase("", structureId?string) >
968 <#assign classTypeIds = [structureId] >
969 ${assetEntryQuery.setClassTypeIds(classTypeIds)}
970
971 <#if !stringUtil.equalsIgnoreCase("", order) >
972 ${assetEntryQuery.setOrderByCol1(order)}
973 ${assetEntryQuery.setOrderByType1(orderType)}
974 </#if>
975 </#if>
976
977 <#if !stringUtil.equalsIgnoreCase("0", linkedAssetEntryId?string) >
978 ${assetEntryQuery.setLinkedAssetEntryId(linkedAssetEntryId)}
979 </#if>
980
981 <#return assetEntryQuery >
982</#function>
983
984<#function getFileEntry url groupId>
985
986
987 <#if url?? && url?length != 0>
988 <#assign uuid = url?split("/")?last?split("?")?first>
989 </#if>
990 <#assign uuidString = getterUtil.getString(uuid)/>
991 <#return fileEntryService.fetchDLFileEntryByUuidAndGroupId(uuidString, groupId) />
992
993</#function>
994
995<#function replaceSpecialCharacters url>
996 <#return htmlUtil.escapeHREF(url?replace("|","%7C")) />
997</#function>
998
999
1000<#function appendTag(element) >
1001 <#if !(element?starts_with("<p>")||element?starts_with("<ul>")||element?starts_with("<ol>")||element?starts_with("<table>"))>
1002 <#assign corrected = "<p>" + element >
1003 <#else>
1004 <#assign corrected = element >
1005 </#if>
1006
1007 <#if !(element?ends_with("</p>")||element?ends_with("</ul>")||element?ends_with("</ol>")||element?ends_with("</table>"))>
1008 <#assign corrected = corrected + "</p>">
1009 </#if>
1010
1011 <#return corrected>
1012</#function>
1013
1014<#function getTemplateKey templateName >
1015 <#assign templateKey = "0" >
1016
1017 <#attempt>
1018 <#assign templateClass = staticUtil["com.liferay.portal.kernel.util.ClassResolverUtil"].resolveByPortalClassLoader("com.liferay.dynamic.data.mapping.model.DDMTemplate") />
1019
1020 <#assign dynamicQuery = staticUtil["com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil"].forClass(templateClass) />
1021
1022 <#assign VOID = dynamicQuery.add(propertyFactoryUtil.forName("name").like("%" + templateName + "%")) >
1023
1024 <#if validator.isNotNull(ddmTemplateLocalService.dynamicQuery(dynamicQuery)) >
1025 <#assign template = ddmTemplateLocalService.dynamicQuery(dynamicQuery)?first >
1026 <#assign templateKey = template.getTemplateKey() >
1027 </#if>
1028 <#recover>
1029 </#attempt>
1030
1031 <#return templateKey >
1032</#function>