Busse von Santander nach
Llanes, zum besten Preis
Busfahrpläne und Haltestellen
Wie verläuft die Reise von ##origin## nach ##destination##?
Die Busse von ##origin## nach ##destination## verkehren ##times## Mal täglich und die Fahrtdauer beträgt ##durationMin##. Sie können Ihre Tickets nach ##destination## bereits ab nur ##Precio## € buchen
Die Busse von ##origin## nach ##destination## verkehren ##times## Mal täglich und die Fahrtdauer liegt zwischen ##durationMin## beim direktesten Service und ##durationMax## Stunden beim mit den meisten Zwischenstopps. Sie können Ihre Tickets nach ##destination## bereits ab nur ##Precio## € buchen
|
##Duracion## |
|
|
##firstBus## |
|
|
##lastBus## |
|
##Distancia##Km |
|
##times## Busse täglich |
425
393
Beste Preise und Tage für Reisen von ##origin## nach ##destination##
In diesem Abschnitt können Sie die besten Preise und Tage für Reisen von ##origin## nach ##destination## einsehen. Finden Sie leicht die günstigste Option je nach Wochentag.
In den kommenden Monaten
Stationen
##origin##
##destination##
Vorteile des Reisens mit Alsa
Komfort
Die Busse sind mit WLAN, Bordunterhaltung, Fußstützen, WC und den besten Sicherheitssystemen ausgestattet.
Bester Preis
Unsere Fahrten sind die günstigste Art zu reisen, mit garantiert bestem Preis.
Umwelteffizienz
Busfahren ist die nachhaltigste Art zu reisen und verbessert unsere CO2-Bilanz.
Häufig gestellte Fragen
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> busInformation [in template "10157#10197#77738740" at line 14, column 6]
----
FTL stack trace ("~" means nesting-related):
- Failed at: #if busInformation.status?? && busInf... [in template "10157#10197#77738740" at line 14, column 1]
----
1<#assign originId = Origen.route_id_origin.getData() />
2<#assign destinationId = Destino.route_id_destination.getData() />
3<#assign price = route_minimum_price.getData() />
4<#assign distance = route_distance.getData() />
5
6
7<#assign errorService = false>
8<#attempt>
9 <#assign busInformation = (restClient.get("/Alsa-SEO-rest/v1.0/bus-information?languageId=${themeDisplay.getLanguageId()}&originId=${originId}&destinationId=${destinationId}") )>
10<#recover>
11 <#assign errorService = true>
12</#attempt>
13<#if busInformation.status?? && busInformation.status =="INTERNAL_SERVER_ERROR">
14 <#assign errorService = true>
15
16</#if>
17
18 <#assign journalArticleId = .vars['reserved-article-id'].data>
19 <#assign journalArticleResourceLocalServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")>
20 <#assign assetCategoryLocalServiceUtil = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
21 <#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/>
22 <#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) >
23 <#assign journalArticle = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
24 <#assign encontrado = false>
25 <#assign articles = [] >
26 <#list categoryList as category>
27 <#if !encontrado>
28 <#assign urlTitle = "seo_faqs_" + category.getName()?lower_case>
29 <#attempt>
30 <#assign article = journalArticle.getArticleByUrlTitle(groupId, urlTitle)!>
31 <#if article??>
32 <#assign articles += [article]>
33 </#if>
34 <#recover>
35 </#attempt>
36
37 </#if>
38 </#list>
39
40 <#attempt>
41<#assign articleGenerico = journalArticle.getArticleByUrlTitle(groupId, "seo_faqs_genericas")!>
42 <#if articleGenerico??>
43 <#assign articles += [articleGenerico]>
44 </#if>
45 <#recover>
46 </#attempt>
47
48 <#assign faqs = []>
49 <#list articles as article>
50 <#assign document = saxReaderUtil.read(article.getContentByLocale(localeUtil.toLanguageId(themeDisplay.locale)))>
51 <#assign rootElement = document.getRootElement() />
52
53
54
55<#list rootElement.elements() as dinamicElement>
56
57 <#-- Inicializamos variables vacías para cada FAQ -->
58 <#assign titulo = "">
59 <#assign valorEvaluar = "">
60 <#assign respuesta = "">
61 <#assign respuestaGenerica = "">
62 <#assign respuestaSupra = "">
63 <#assign respuestaComfort = "">
64 <#assign respuestaSi = "">
65 <#assign respuestaNo = "">
66
67 <#foreach dinamicElementFill in dinamicElement.elements()>
68 <#assign fieldRef = dinamicElementFill.attributeValue("field-reference")>
69 <#if fieldRef == "tituloFaq">
70 <#assign titulo = dinamicElementFill.element("dynamic-content").getText()>
71 </#if>
72 <#if fieldRef == "valorEvaluar">
73 <#assign valorEvaluar = dinamicElementFill.element("dynamic-content").getText()>
74 </#if>
75 <#if fieldRef == "respuestaGenerica">
76 <#assign respuestaGenerica = dinamicElementFill.element("dynamic-content").getText()>
77 </#if>
78 <#if valorEvaluar == "tipoServcio" || valorEvaluar == "tipoServicioUltimo">
79 <#if fieldRef == "respuestaConfort">
80 <#assign respuestaComfort = dinamicElementFill.element("dynamic-content").getText()>
81 </#if>
82 <#if fieldRef == "respuestaSupra">
83 <#assign respuestaSupra = dinamicElementFill.element("dynamic-content").getText()>
84 </#if>
85 </#if>
86 <#if valorEvaluar == "Opción45855620" || valorEvaluar == "nocturno">
87
88 <#if fieldRef == "respuestaSi">
89 <#assign respuestaSi = dinamicElementFill.element("dynamic-content").getText()>
90
91 </#if>
92 <#if fieldRef == "respuestaNo">
93 <#assign respuestaNo = dinamicElementFill.element("dynamic-content").getText()>
94
95 </#if>
96 </#if>
97 </#foreach>
98
99 <#if !errorService>
100 <#if titulo?has_content || valorEvaluar?has_content || respuestaGenerica?has_content>
101 <#-- reemplazamos las variables en titulo -->
102 <#assign titulo = titulo?replace("[destino]", busInformation.destination)?replace("[origen]", busInformation.origin) />
103
104 <#-- reemplazamos las variables en respuestaGenericas -->
105 <#assign estacionesDesFormateadas = "">
106 <#assign estacionesOriFormateadas = "">
107 <#list busInformation.lastStopsOnItinerary as estacion>
108 <#assign estacionesDesFormateadas += "- ${estacion} <br>">
109 </#list>
110 <#list busInformation.firstStopsOnItinerary as estacion>
111 <#assign estacionesOriFormateadas += "- ${estacion} <br>">
112 </#list>
113 <#assign respuestaGenerica = respuestaGenerica?replace("[destino]", busInformation.destination)?replace("[origen]",
114 busInformation.origin)?replace("[numeroServicios]", busInformation.times)?replace("[tiempoViaje]", busInformation.durationMin)
115 ?replace("[estacionesDestino]", estacionesDesFormateadas)?replace("[estacionesOrigen]", estacionesOriFormateadas)
116 ?replace("[price]", price)?replace("[distance]", distance) />
117
118 <#if valorEvaluar == "tipoServcio" >
119
120 <#-- reemplazamos las variables en respuestaSupra -->
121 <#if busInformation.firstBusSupra?has_content>
122 <#assign respuestaSupra = respuestaSupra?replace("[destino]", busInformation.destination)?replace("[origen]",
123 busInformation.origin)?replace("[tipoServicio]", busInformation.firstBusSupra.serviceType)
124 ?replace("[horaPrimerAutoBusSupra]", busInformation.firstBusSupra.firstBusTime)
125 ?replace("[estacionOrigen]", busInformation.firstBusSupra.originStation)
126 ?replace("[estacionDestino]", busInformation.firstBusSupra.destinationStation)
127 ?replace("[horaLlegada]", busInformation.firstBusSupra.arrivalTime)/>
128 <#else>
129 <#assign respuestaSupra = "" />
130 </#if>
131
132 <#-- reemplazamos las variables en respuestaComfort -->
133 <#if busInformation.firstBusComfort?has_content>
134 <#assign respuestaComfort = respuestaComfort?replace("[destino]", busInformation.destination)?replace("[origen]",
135 busInformation.origin)?replace("[tipoServicio]", busInformation.firstBusComfort.serviceType)
136 ?replace("[horaPrimerAutoBusConfort]", busInformation.firstBusComfort.firstBusTime)
137 ?replace("[estacionOrigen]", busInformation.firstBusComfort.originStation)
138 ?replace("[estacionDestino]", busInformation.firstBusComfort.destinationStation)
139 ?replace("[horaLlegada]", busInformation.firstBusComfort.arrivalTime)/>
140 <#else>
141 <#assign respuestaComfort = "" />
142 </#if>
143 </#if>
144 <#if valorEvaluar == "tipoServicioUltimo" >
145
146 <#-- reemplazamos las variables en respuestaSupra ultimo bus-->
147 <#if busInformation.lastBusSupra?has_content>
148 <#assign respuestaSupra = respuestaSupra?replace("[destino]", busInformation.destination)?replace("[origen]",
149 busInformation.origin)?replace("[tipoServicio]", busInformation.lastBusSupra.serviceType)
150 ?replace("[horaPrimerAutoBusSupra]", busInformation.lastBusSupra.firstBusTime)
151 ?replace("[estacionOrigen]", busInformation.lastBusSupra.originStation)
152 ?replace("[estacionDestino]", busInformation.lastBusSupra.destinationStation)
153 ?replace("[horaLlegada]", busInformation.lastBusSupra.arrivalTime)/>
154 <#else>
155 <#assign respuestaSupra = "" />
156 </#if>
157
158 <#-- reemplazamos las variables en respuestaComfort ultimo bus-->
159 <#if busInformation.lastBusComfort?has_content>
160 <#assign respuestaComfort = respuestaComfort?replace("[destino]", busInformation.destination)?replace("[origen]",
161 busInformation.origin)?replace("[tipoServicio]", busInformation.lastBusComfort.serviceType)
162 ?replace("[horaPrimerAutoBusConfort]", busInformation.lastBusComfort.firstBusTime)
163 ?replace("[estacionOrigen]", busInformation.lastBusComfort.originStation)
164 ?replace("[estacionDestino]", busInformation.lastBusComfort.destinationStation)
165 ?replace("[horaLlegada]", busInformation.lastBusComfort.arrivalTime)/>
166 <#else>
167 <#assign respuestaComfort = "" />
168 </#if>
169</#if>
170 <#if valorEvaluar == "Opción45855620" >
171
172 <#if busInformation.travelEveryDay == "S">
173 <#assign respuestaSi = respuestaSi?replace("[destino]", busInformation.destination)?replace("[origen]",
174 busInformation.origin)?replace("[numeroServicios]", busInformation.times)?replace("[tiempoViaje]", busInformation.durationMin) />
175 <#assign respuestaNo = "" />
176 <#else>
177 <#assign respuestaNo = respuestaNo?replace("[destino]", busInformation.destination)?replace("[origen]",
178 busInformation.origin)?replace("[numeroServicios]", busInformation.times)?replace("[tiempoViaje]", busInformation.durationMin) />
179 <#assign respuestaSi = "" />
180
181 </#if>
182 </#if>
183 <#if valorEvaluar == "nocturno" >
184 <#if busInformation.firstNightService?has_content >
185 <#assign respuestaSi = respuestaSi?replace("[destino]", busInformation.destination)?replace("[origen]",
186 busInformation.origin)?replace("[numeroServicios]", busInformation.times)?replace("[tipoServicio]", busInformation.firstNightService.serviceType)
187 ?replace("[horaPrimerAutoBusNocturno]", busInformation.firstNightService.firstBusTime)
188 ?replace("[estacionOrigen]", busInformation.firstNightService.originStation)
189 ?replace("[estacionDestino]", busInformation.firstNightService.destinationStation)
190 ?replace("[horaLlegada]", busInformation.firstNightService.arrivalTime)/>
191 <#assign respuestaNo = "" />
192 <#else>
193 <#if busInformation.lastBusComfort?has_content>
194 <#assign respuestaNo = respuestaNo?replace("[destino]", busInformation.destination)?replace("[origen]",
195 busInformation.origin)?replace("[numeroServicios]", busInformation.times)?replace("[tipoServicio]", busInformation.lastBusComfort.serviceType)
196 ?replace("[horaPrimerAutoBusConfort]", busInformation.lastBusComfort.firstBusTime)
197 ?replace("[estacionOrigen]", busInformation.lastBusComfort.originStation)
198 ?replace("[estacionDestino]", busInformation.lastBusComfort.destinationStation)
199 ?replace("[horaLlegada]", busInformation.lastBusComfort.arrivalTime)/>
200 <#assign respuestaSi = "" />
201 <#else>
202 <#assign respuestaNo = respuestaNo/>
203 <#assign respuestaSi = "" />
204 </#if>
205 </#if>
206 </#if>
207 <#if (respuestaGenerica!="" || respuestaComfort!="" || respuestaSupra!="" || respuestaSi!="" || respuestaNo!="") >
208
209 <#assign faqs = faqs + [{"titulo": titulo, "valorEvaluar": valorEvaluar, "respuestaGenerica":
210 respuestaGenerica, "respuestaComfort": respuestaComfort, "respuestaSupra": respuestaSupra,
211 "respuestaSi": respuestaSi, "respuestaNo": respuestaNo}]>
212</#if>
213 </#if>
214 <#else>
215 <#if !titulo?contains("[") && (respuestaGenerica!="" || respuestaComfort!="" || respuestaSupra!="" || respuestaSi!="" || respuestaNo!="") >
216 <#assign faqs = faqs + [{"titulo": titulo, "valorEvaluar": valorEvaluar, "respuestaGenerica":
217 respuestaGenerica, "respuestaComfort": respuestaComfort, "respuestaSupra": respuestaSupra,
218 "respuestaSi": respuestaSi, "respuestaNo": respuestaNo}]>
219 </#if>
220 </#if>
221
222</#list>
223 </#list>
224
225<div class="dropdown2020 c-dropdown-with-info container-fluid">
226<#assign idAleatorioInicial = .now?long />
227 <div class="preguntas-frecuentes container">
228 <div id="accordion${idAleatorioInicial}" class="panel-group" role="tablist" aria-multiselectable="true">
229 <#if faqs?has_content>
230 <#assign idAleatorio = .now?long />
231 <#list faqs as faq>
232 <div class="panel panel-default">
233 <div class="panel-heading accordian" role="tab" id="heading_${idAleatorio}" aria-selected="false" aria-controls="collapse_${idAleatorio}"
234 aria-expanded="false" tabindex="-1">
235 <div class="pregunta-faq">
236 <a role="button" data-toggle="collapse" data-parent="#accordion${idAleatorioInicial}"
237 href="#collapse_${idAleatorio}" title="${faq.titulo}" aria-expanded="false" aria-controls="collapse_${idAleatorio}" class="collapsed">
238 <span class="container-displays-blinds h3">
239 ${faq.titulo}
240 </span>
241 </a>
242 </div>
243 </div>
244 <div id="collapse_${idAleatorio}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading_${idAleatorio}" aria-hidden="true" aria-expanded="false">
245 <div class="contenido-preguntas-frecuentes" tabindex="0">
246 <#if faq.valorEvaluar == "ninguno" >
247 ${faq.respuestaGenerica}
248 <#elseif faq.valorEvaluar == "tipoServcio">
249 ${faq.respuestaSupra}
250 ${faq.respuestaComfort}
251 <#elseif faq.valorEvaluar == "tipoServicioUltimo">
252 ${faq.respuestaSupra}
253 ${faq.respuestaComfort}
254 <#elseif faq.valorEvaluar == "Opción45855620">
255 ${faq.respuestaSi}
256 ${faq.respuestaNo}
257 <#elseif faq.valorEvaluar == "nocturno">
258 ${faq.respuestaSi}
259 ${faq.respuestaNo}
260 </#if>
261 </div>
262 </div>
263 <#assign idAleatorio-- />
264 </div>
265 </#list>
266 </#if>
267 </div>
268 </div>
269</div>
270
271
272<#if faqs?has_content>
273<script type="application/ld+json">
274<@compress single_line=true>
275{
276 "@context": "https://schema.org",
277 "@type": "FAQPage",
278 "mainEntity": [
279 <#list faqs as faq>
280 <#-- Determinar qué respuesta usar -->
281 <#assign respuesta = "">
282 <#if faq.respuestaGenerica?has_content>
283 <#assign respuesta = faq.respuestaGenerica>
284 <#elseif faq.respuestaComfort?has_content>
285 <#assign respuesta = faq.respuestaComfort>
286 <#elseif faq.respuestaSupra?has_content>
287 <#assign respuesta = faq.respuestaSupra>
288 <#elseif faq.respuestaSi?has_content>
289 <#assign respuesta = faq.respuestaSi>
290 <#elseif faq.respuestaNo?has_content>
291 <#assign respuesta = faq.respuestaNo>
292 </#if>
293
294 <#assign cleaned_answer = respuesta?replace("'", "’")>
295 <#assign cleaned_question = faq.titulo?replace("'", "’")>
296 {
297 "@type": "Question",
298 "name": "${cleaned_question?json_string}",
299 "acceptedAnswer": {
300 "@type": "Answer",
301 "text": "${cleaned_answer?json_string}"
302 }
303 }<#if faq_has_next>,</#if>
304 </#list>
305 ]
306}
307</@compress>
308</script>
309</#if>