Во время обработки запрошенного шаблона произошла ошибка...
Range start index 0 is out of bounds, because the sliced string has only 0 character(s). (Note that indices are 0-based).
The blamed expression:
==> 0..underline [in template "18771710#18771743#347743556" at line 83, column 77]
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${.vars["reserved-article-title"].dat... [in template "18771710#18771743#347743556" at line 83, column 38]
---- 1<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" 2 integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" 3 crossorigin=""/> 4<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" 5 integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" 6 crossorigin=""></script> 7<#assign dataInicial_Data = getterUtil.getString(dataInicial.getData())> 8<#if validator.isNotNull(dataInicial_Data)> 9 <#assign dataInicial_DateObj = dateUtil.parseDate("yyyy-MM-dd", dataInicial_Data, locale)> 10 <#assign dataInicial = dateUtil.getDate(dataInicial_DateObj, "dd/MM/yyyy", locale)> 11</#if> 12 13<#assign dataFinal_Data = getterUtil.getString(dataFinal.getData())> 14<#if validator.isNotNull(dataFinal_Data)> 15 <#assign dataFinal_DateObj = dateUtil.parseDate("yyyy-MM-dd", dataFinal_Data, locale)> 16 <#assign dataFinal = dateUtil.getDate(dataFinal_DateObj, "dd/MM/yyyy", locale)> 17</#if> 18 19<#if dataInicial == dataFinal > 20 <#assign sData = dataInicial> 21<#else> 22 <#assign sData = dataInicial + " - " + dataFinal> 23</#if> 24 25<#assign urlImatge = ""> 26<#assign descImatge = ""> 27<#assign entryIdImatge = ""> 28<#if imatge.getData()?? && imatge.getData() != ""> 29 <#assign urlImatge = imatge.getData()> 30 <#assign descImatge = imatge.getAttribute("alt")> 31 <#assign entryIdImatge = "data-fileentryid='" + imatge.getAttribute("fileEntryId") + "'"> 32<#else> 33 <#if imatge.urlExterna?? && imatge.urlExterna.getData() != ""> 34 <#assign urlImatge = imatge.urlExterna.getData()> 35 </#if> 36 <#if imatge.descImatgeExterna?? && imatge.descImatgeExterna.getData() != ""> 37 <#assign descImatge = imatge.descImatgeExterna.getData()> 38 </#if> 39</#if> 40 41<script type="application/ld+json"> 42{ 43"@context": "https://schema.org", 44"@type": "Event", 45"name": "${.vars['reserved-article-title'].data}", 46<#if validator.isNotNull(dataInicial_DateObj)> 47"startDate": "${dateUtil.getDate(dataInicial_DateObj, "yyyy-MM-dd", locale)}", 48</#if> 49<#if validator.isNotNull(dataFinal_DateObj)> 50"endDate": "${dateUtil.getDate(dataFinal_DateObj, "yyyy-MM-dd", locale)}", 51</#if> 52"location": { 53 "@type": "Place", 54 <#if nomLloc.getData()?has_content > 55 "name": "${nomLloc.getData()}", 56 <#else> 57 "name": "${.vars['reserved-article-title'].data}", 58 </#if> 59 <#if municipi.getData()?has_content || carrer.getData()?has_content> 60 "address": { 61 "@type": "PostalAddress", 62 <#if carrer.getData()?has_content> 63 "streetAddress": "${carrer.getData()}", 64 </#if> 65 <#if municipi.getData()?has_content> 66 "addressLocality": "${municipi.getData()}" 67 </#if> 68 } 69 </#if> 70}, 71<#if urlImatge != ""> 72"image": [ 73 "${urlImatge}" 74], 75</#if> 76"description": "${htmlUtil.toInputSafe(htmlUtil.stripHtml(descripcio.getData()))}", 77"url": "https://www.barcelonaesmoltmes.cat${portalUtil.getCurrentURL(request)}" 78} 79</script> 80 81<h2 class="title my-4 text-left"> 82 <#assign underline = (.vars['reserved-article-title'].data?length/3)?int> 83 <span class="text-big-underline">${.vars['reserved-article-title'].data[0..underline]}</span>${.vars['reserved-article-title'].data[underline+1..]} 84</h2> 85 86<div class="row"> 87 <#if urlImatge != ""> 88 <div class="col-lg-5 col-12"> 89 <img src="${urlImatge}" alt="${descImatge}" ${entryIdImatge} class="img-fluid" /> 90 </div> 91 <div class="col-lg-7 col-12"> 92 <#else> 93 <div class="col-12"> 94 </#if> 95 <div class="shadow border p-3 mb-4 text-left"> 96 ${descripcio.getData()} 97 </div> 98 </div> 99</div> 100 101<div class="row"> 102 <div class="col text-left"> 103 <p class="mb-1 mt-3">${mesInfo.getData()} </p> 104 105 <h4 class="mt-4">${languageUtil.get(locale, "turisme.agenda.quan")}</h4> 106 <p class="mb-1"><b>${sData}</b></p> 107 <#if horari?? && horari.getData()?has_content> 108 <p class="mb-1">${horari.getData()}</p> 109 </#if> 110 111 <h4 class="mt-4">${languageUtil.get(locale, "turisme.agenda.on")}</h4> 112 <#if nomLloc.getData()?has_content > 113 <p class="mb-1">${nomLloc.getData()}</p> 114 </#if> 115 <#if carrer.getData()?has_content > 116 <p class="mb-1"> ${carrer.getData()} </p> 117 </#if> 118 <p class="mb-1"><b>${municipi.getData()}</b></p> 119 120 121 <h4 class="mt-4">${languageUtil.get(locale, "turisme.agenda.mesInfo")}</h4> 122 <#if organitzador.getData()?has_content > 123 <p class="mb-1">${organitzador.getData()}</p> 124 </#if> 125 <#if telefon.getData()?has_content > 126 <p class="mb-1">Tel. ${telefon.getData() }</p> 127 </#if> 128 <#if entrada.getData()?has_content > 129 <p class="mb-1">${entrada.getData() }</p> 130 </#if> 131 <#if web.getData()?has_content > 132 <p class="mb-1"><a href="${web.getData()}" target="_blank">Web</a></p> 133 </#if> 134 <#list recursos.arxiu.getSiblings() as cur_arxiu> 135 <#assign urlDoc = ""> 136 <#if cur_arxiu.getData()?? && cur_arxiu.getData() != ""> 137 <#assign urlDoc = cur_arxiu.getData()> 138 <#else> 139 <#if cur_arxiu.urlExterna2?? && cur_arxiu.urlExterna2.getData() != ""> 140 <#assign urlDoc = cur_arxiu.urlExterna2.getData()> 141 </#if> 142 </#if> 143 <#if urlDoc != ""> 144 <p class="mb-1"><a href="${urlDoc}" target="_blank"> 145 <#if cur_arxiu.titolAdjunt?? && cur_arxiu.titolAdjunt.getData()?has_content> 146 ${cur_arxiu.titolAdjunt.getData()} 147 <#else> 148 ${languageUtil.format(locale, "download-x", "Arxiu adjunt", false)} 149 </#if> 150 </a></p> 151 </#if> 152 </#list> 153 </div> 154</div> 155 156<#assign adjunts = false> 157<#if recursos.arxiu?? && recursos.arxiu.getSiblings()?has_content > 158 <#list recursos.arxiu.getSiblings() as cur_arxiu> 159 <#if cur_arxiu.getData()?has_content > 160 <#assign adjunts = true> 161 <#break> 162 </#if> 163 </#list> 164</#if> 165 166<#if adjunts > 167<div class="row"> 168 <div class="col"> 169 </div> 170</div> 171</#if> 172 173<div class="row"> 174 <h4 class="col mt-4 text-left">${languageUtil.get(locale, "detail.mapa")}</h4> 175</div> 176<div class="row"> 177 <div class="col-12"> 178 <#assign journalArticleId = .vars["reserved-article-id"].data> 179 <div id="mapa_${journalArticleId}" class="embed-responsive embed-responsive-16by9"></div> 180 <#assign indicacions= languageUtil.get(locale,"agenda.indicacions") > 181 <script> 182 jQuery(document).ready(function() { 183 // Llista de cartografies. 184 var tiles = L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { 185 maxZoom: 18, 186 attribution: "© Diputació de Barcelona" 187 }), 188 googleStreets = L.tileLayer("https://{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}&hl=ca", { 189 maxZoom: 20, 190 subdomains: ["mt0", "mt1", "mt2", "mt3"], 191 attribution: "© Diputació de Barcelona" 192 }); 193 // Punt central del mapa. 194 var latlng = L.latLng(${latitud.getData()},${longitud.getData()}); 195 196 var map_google = L.map("mapa_${journalArticleId}", {center: latlng, zoom: 15, layers: [googleStreets]}); 197 <#assign marcador="<a href='${web.getData()}' target='_blank'>${.vars['reserved-article-title'].data}</a><br/>${nomLloc.getData()}<br/><a href='https://www.google.es/maps/place/${latitud.getData()},${longitud.getData()}' target='_blank'>${indicacions}</a> " > 198 L.marker([${latitud.getData()},${longitud.getData()}]).addTo(map_google).bindPopup("${marcador}"); 199 }); 200 </script> 201 </div> 202</div> 
