Playas

Playas y Calas

En la Comunitat Valenciana encontrarás las playas y calas con las que siempre has soñado. Desde extensos arenales hasta recónditas calas, pasando por una gran variedad de playas accesibles y naturistas nutridas de una amplia oferta turística. Aguas cristalinas e infinitos arenales que convierten un simple baño en una experiencia llena de sensaciones.

Con más de 500 kilómetros de costa, la Comunitat Valenciana cuenta con un gran número de playas con bandera azul, lo que la convierte en la primera comunidad autónoma española con mayor número de distintivos por kilómetro cuadrado del país. No es para menos. La variedad y calidad de sus playas convierte el litoral de la Comunitat Valenciana en un lugar relevante del arco mediterráneo. Sus playas y calas son mundialmente conocidas por su belleza natural y servicios para disfrutarlas en cualquier momento del año, gracias también a un clima soleado casi todo el año. ¿A qué estás esperando para encontrar tu nueva playa favorita? Recorre en este directorio todas las playas y calas de la Comunitat Valenciana.

Playas para perros en la Comunitat Valenciana para el verano 2021

Encuentra

Nombre
Provincias
Alacant/Alicante
Castelló/Castellón
València
Municipios
Certificados

Propuestas de viaje

Inspírate

image
Exprime cada instante en Benidorm, un lugar que no se detiene, que se disfruta y que se siente. Hay muchas palabras que podrían definir este destino: felicidad, calma, diversión... ¿Vas a dejar que te lo cuenten?
image
Hay lugares de ensueño que consiguen atraparnos, que nos muestran preciosos atardeceres y donde la brisa del Mediterráneo es el complemento ideal. Adéntrate en la Cala de la Foradada en Vinaròs, desconecta, siente y disfruta.
image
Una puerta azul para contemplar la inmensidad del Mediterráneo. Sentir la brisa del mar erizando tu piel. Hundir tus pies en la arena. Hay lugares indescriptibles, en los que te faltan las palabras y solo quien lo ha vivido lo sabe.
image
Quién nos iba a decir que un gran manto multicolor se uniría con el azul del Mediterráneo, un lugar en el que el tiempo se detiene y da rienda suelta a los sentidos. Solo quien lo ha vivido lo sabe, ¿vas a quedarte sin conocer Alboraya?

Noticias

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> language_url  [in template "20099#20135#413073" at line 314, column 80]

----
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 urlFriendly = language_url + ...  [in template "20099#20135#413073" at line 314, column 57]
----
1<#if selectionStyle == "dynamic" > 
2<#assign aeq = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery")/> 
3<#assign pathKey = serviceLocator.findService("es.cv.urlfilter.service.PathKeyLocalService")> 
4<#assign pathValue = serviceLocator.findService("es.cv.urlfilter.service.PathValueLocalService")> 
5<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
6<#assign AssetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")> 
7<#assign pfu = serviceLocator.findService("com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil")> 
8<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")> 
9 
10 
11<#assign language = locale.getLanguage()!"es" /> 
12	<#assign custom_language = "Es" 
13		language_url = "/"+language> 
14	 
15	<#if language == "es"> 
16		<#assign custom_language = "Es"> 
17	<#elseif language == "en"> 
18		<#assign custom_language = "En"> 
19	<#elseif language == "fr"> 
20		<#assign custom_language = "Fr"> 
21	<#elseif language == "de"> 
22		<#assign custom_language = "De"> 
23	<#elseif language == "ca"> 
24		<#assign custom_language = "Va" 
25				 language_url="/va" >	 
26	</#if> 
27 
28 
29 
30<#assign slugs = {  
31    "province": (avtContext.provinceSlug)!'', 
32    "township": (avtContext.townshipSlug)!'', 
33    "type": (avtContext.typeSlug)!'', 
34    "subtype": (avtContext.subtypeSlug)!'', 
35    "segment": (avtContext.segmentSlug)!'', 
36    "subsegment": (avtContext.subsegmentSlug)!'', 
37    "resource": (avtContext.resourceSlug)!'' 
38 } /> 
39 
40<#assign dinamicPage = "false"> 
41<#assign typePathKey = ""> 
42<#assign idPathKey = 0> 
43<#assign slug = ""> 
44 
45<#assign queryValues0 = [] > 
46<#if portletPreferences["queryValues0"]??> 
47    <#assign queryValues0 = portletPreferences["queryValues0"] > 
48</#if> 
49 
50 
51<#if portletPreferences["orderByColumn1"]??> 
52    <#assign orders1 = portletPreferences["orderByColumn1"] > 
53</#if> 
54 
55<#if portletPreferences["orderByColumn2"]??> 
56    <#assign orders2 = portletPreferences["orderByColumn2"] > 
57</#if> 
58 
59<#assign queryValues1 = [] > 
60<#if portletPreferences["queryValues1"]??> 
61    <#assign queryValues1 = portletPreferences["queryValues1"] > 
62</#if> 
63 
64<#assign deltas = [] > 
65<#if portletPreferences["delta"]??> 
66    <#assign deltas = portletPreferences["delta"] > 
67</#if> 
68 
69<#assign queryAndOperator0 = [] > 
70<#if portletPreferences["queryAndOperator0"]??> 
71    <#assign queryAndOperator0 = portletPreferences["queryAndOperator0"] > 
72</#if> 
73 
74<#assign queryAndOperator1 = [] > 
75<#if portletPreferences["queryAndOperator1"]??> 
76    <#assign queryAndOperator1 = portletPreferences["queryAndOperator1"] > 
77</#if> 
78 
79<#assign queryNames0 = [] > 
80<#if portletPreferences["queryName0"]??> 
81    <#assign queryNames0 = portletPreferences["queryName0"] > 
82</#if> 
83 
84<#assign queryNames1 = [] > 
85<#if portletPreferences["queryName1"]??> 
86    <#assign queryNames1 = portletPreferences["queryName1"] > 
87</#if> 
88 
89 
90<#assign categoriesArrayAND = [] /> 
91<#assign categoriesArrayOR = [] /> 
92 
93<#assign tagsArrayAND = [] /> 
94<#assign tagsArrayOR = [] /> 
95 
96 
97<#--Numero de elementos a mostrar--> 
98<#assign size = 20?number > 
99<#list deltas as delta> 
100    <#assign size = delta?number > 
101</#list> 
102 
103<#--Nombre de la primera query--> 
104<#list queryNames0 as queryName0> 
105    <#assign firstQuery = queryName0 > 
106</#list> 
107<#--Nombre de la segunda query--> 
108<#list queryNames1 as queryName1> 
109    <#assign secondQuery = queryName1 > 
110</#list> 
111 
112<#--Operador de la primera query--> 
113<#list queryAndOperator0 as order0Aux> 
114    <#assign orderAnd0 = order0Aux > 
115</#list> 
116 
117<#--Operador de la primera query--> 
118<#list queryAndOperator1 as order1Aux> 
119    <#assign orderAnd1 = order1Aux > 
120</#list> 
121 
122 
123<#if firstQuery??> 
124    <#if firstQuery == "assetCategories"> 
125        <#list queryValues0 as queryValue0> 
126            <#assign num = queryValue0?number> 
127            <#if orderAnd0 == "true"> 
128                <#assign categoriesArrayAND = categoriesArrayAND + [ num ] /> 
129            </#if> 
130            <#if orderAnd0 == "false"> 
131                <#assign categoriesArrayOR = categoriesArrayOR + [ num ] /> 
132            </#if> 
133        </#list> 
134    <#elseif firstQuery == "assetTags"> 
135        <#list queryValues0 as queryValue0> 
136            <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue0 + "%"))> 
137            <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
138            <#list tags as tag> 
139                 <#if orderAnd0 == "true"> 
140                    <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] /> 
141                </#if> 
142                <#if orderAnd0 == "false"> 
143                    <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] /> 
144                </#if> 
145            </#list> 
146        </#list> 
147    </#if> 
148</#if> 
149 
150 
151<#if secondQuery??> 
152    <#if secondQuery == "assetCategories"> 
153        <#list queryValues1 as queryValue1> 
154            <#assign num = queryValue1?number> 
155            <#if orderAnd1 == "true"> 
156                <#assign categoriesArrayAND = categoriesArrayAND + [ num ] /> 
157            </#if> 
158            <#if orderAnd1 == "false"> 
159                <#assign categoriesArrayOR = categoriesArrayOR + [ num ] /> 
160            </#if> 
161        </#list> 
162    <#elseif secondQuery == "assetTags">   
163        <#list queryValues1 as queryValue1> 
164            <#assign dynamicQuery = AssetTagLocalService.dynamicQuery().add(pfu.forName("name").like("%" + queryValue1 + "%"))> 
165            <#assign tags = AssetTagLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
166            <#list tags as tag> 
167                 <#if orderAnd1 == "true"> 
168                    <#assign tagsArrayAND = tagsArrayAND + [ tag.getTagId() ] /> 
169                </#if> 
170                <#if orderAnd1 == "false"> 
171                    <#assign tagsArrayOR = tagsArrayOR + [ tag.getTagId() ] /> 
172                </#if> 
173            </#list> 
174        </#list> 
175    </#if> 
176</#if> 
177 
178 
179 
180 
181<#if slugs["township"]?has_content && slugs["province"]?has_content> 
182    <#assign typePathKey = pathKey.findByType("township")> 
183    <#assign slug = slugs["township"]> 
184    <#assign idPathKey = typePathKey.getKeyId()> 
185    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
186 
187 
188    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
189    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
190    <#list categories as category> 
191        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
192    </#list> 
193<#elseif slugs["province"]?has_content> 
194       <#assign typePathKey = pathKey.findByType("province")> 
195    <#assign slug = slugs["province"]> 
196 
197    <#assign idPathKey = typePathKey.getKeyId()> 
198    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
199	<#assign nameCategory = nameCategory + " (Provincia)"> 
200 
201    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
202    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
203    <#list categories as category> 
204        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
205    </#list> 
206 
207</#if> 
208 
209 
210<#if slugs["type"]?has_content> 
211    <#assign typePathKey = pathKey.findByType("type")> 
212    <#assign slug = slugs["type"]> 
213 
214    <#assign idPathKey = typePathKey.getKeyId()> 
215    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
216 
217 
218    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
219    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
220    <#list categories as category> 
221        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
222    </#list> 
223 
224</#if> 
225 
226<#if slugs["subtype"]?has_content> 
227    <#assign typePathKey = pathKey.findByType("subtype")> 
228    <#assign slug = slugs["subtype"]> 
229 
230    <#assign idPathKey = typePathKey.getKeyId()> 
231    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
232 
233 
234    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
235    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
236    <#list categories as category> 
237        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
238    </#list> 
239 
240</#if> 
241 
242<#if slugs["segment"]?has_content> 
243    <#assign typePathKey = pathKey.findByType("segment")> 
244    <#assign slug = slugs["segment"]> 
245 
246    <#assign idPathKey = typePathKey.getKeyId()> 
247    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
248 
249 
250    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
251    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
252    <#list categories as category> 
253        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
254    </#list> 
255 
256</#if> 
257 
258 
259<#if slugs["subsegment"]?has_content> 
260    <#assign typePathKey = pathKey.findByType("subsegment")> 
261    <#assign slug = slugs["subsegment"]> 
262 
263    <#assign idPathKey = typePathKey.getKeyId()> 
264    <#assign nameCategory = pathValue.getBySlugName(idPathKey, slug, custom_language)> 
265 
266 
267    <#assign dynamicQuery = AssetCategoryLocalService.dynamicQuery().add(pfu.forName("name").like("%" + nameCategory + "%"))> 
268    <#assign categories = AssetCategoryLocalService.dynamicQuery(dynamicQuery, 0, 1) > 
269    <#list categories as category> 
270        <#assign categoriesArrayAND = categoriesArrayAND + [ category.getCategoryId() ] /> 
271    </#list> 
272 
273</#if> 
274 
275 
276<#assign prueba =  aeq.setAllCategoryIds(categoriesArrayAND) > 
277<#assign prueba =  aeq.setAnyCategoryIds(categoriesArrayOR) > 
278 
279<#assign prueba =  aeq.setAllTagIds(tagsArrayAND) > 
280<#assign prueba =  aeq.setAnyTagIds(tagsArrayOR) > 
281 
282<#assign prueba =  aeq.setStart(0) > 
283<#assign prueba =  aeq.setEnd(size) > 
284 
285<#if orders1??> 
286    <#assign prueba =  aeq.setOrderByCol1(orders1[0]) > 
287</#if> 
288 
289<#if orders2??> 
290    <#assign prueba =  aeq.setOrderByCol2(orders2[0]) > 
291</#if> 
292 
293 
294<#assign assetEntryList = AssetEntryLocalService.getEntries(aeq)> 
295<#else> 
296    <#assign assetEntryList = entries> 
297</#if>   
298 
299 
300 
301<#assign pdfCarrusel = "pdf-carrusel-" + randomNamespace>  
302<#if assetEntryList?has_content>  
303	<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>  
304		<section id="${pdfCarrusel}" class="pt-5 pb-5">  
305			<h2 class="text-center title-big"> <@liferay.language key="published.last-publication"/> </h2>  
306			<div class="pdf-carrusel carousel slick-carousel wrapped-content">					  
307				<#list assetEntryList as entry>  
308					<#assign renderer = entry.getAssetRenderer()>  
309					<#assign className = renderer.getClassName() > 
310						<#if className == "com.liferay.journal.model.JournalArticle" >  
311							<#assign journalArticle = renderer.getArticle() >						 
312							<#assign document = saxReaderUtil.read(journalArticle.getContent()) >  
313							<#assign rootElement = document.getRootElement() >  
314							<#assign urlFriendly = language_url+"/publicaciones" >  
315							<#assign urlFriendly = urlFriendly+"/"+journalArticle.getUrlTitle() >  
316							 
317							<#assign publicacionPDF =[] 
318									 publicacionText=[] 
319									 fotodeportada="" >  
320							 
321							<#list rootElement.elements() as dynamicElement >  
322								<#if "fotodeportada" == dynamicElement.attributeValue("name") >  
323									<#assign fotodeportada = dynamicElement.element("dynamic-content").getText() >  
324								</#if>  
325								<#if "publicacion" == dynamicElement.attributeValue("name") > 
326									<#assign publicacion = dynamicElement.element("dynamic-content").getText() >  
327									<#assign publicacionElements = dynamicElement.element("dynamic-content").elements() > 
328									<#list dynamicElement.element("dynamic-element").elements() as dpubli > 
329										<#if dpubli.getText()?trim?length gt 0 >	 
330											<#assign  publicacionText = publicacionText + [dpubli.getText()] >									 
331										</#if> 
332									</#list> 
333	 								<#list dynamicElement.elements() as algo > 									 
334										<#if algo.getText()?trim?length gt 0 >										 
335											<#assign  publicacionPDF = publicacionPDF + [algo.getText()] > 
336										</#if>  
337									</#list>													 								 
338								</#if>  
339							</#list>  
340							 
341							<div class="slick-item h-100">  
342								<div class="row">  
343									<div class="col-4 mt-0 mb-auto">  
344										<img loading="lazy" class="image-pdf w-100 image-result" <#if fotodeportada?length gt 0 > src="${fotodeportada}" <#else> src="/o/main-theme/images/publicaciones.svg" </#if> alt="Image"/>  
345									</div>  
346									<div class="col-8"> 
347										<p class="tag-title">  
348											<a href="${urlFriendly}">${journalArticle.getTitle()}</a>  
349										</p>  
350										<div class="tag-download"> 
351											<@liferay.language key="download" />: 
352										</div>	 
353										<#assign textpubli = "" > 
354										<#list publicacionPDF as pdf > 
355											<#if pdf?index lt publicacionText?size >										 
356											<#if pdf?length gt 0 > 
357												<#if textpubli?contains(publicacionText[pdf?index]) == false > 
358													<#assign textpubli = textpubli +" "+publicacionText[pdf?index] > 
359													<a class="link-pdf text-uppercase" href="${pdf}" target="_blank" download="${journalArticle.getTitle()}">${publicacionText[pdf?index]}</a>										  
360												</#if> 
361											</#if> 
362											</#if> 
363										</#list>								   
364									</div>  
365								</div> 
366							</div> 
367						</#if>  
368					 
369				</#list>  
370			</div>  
371		</section>  
372	 
373	 
374	<style>  
375	#${pdfCarrusel} { padding: 5rem 0; }  
376	#${pdfCarrusel} .image-pdf { min-height: 5rem; height: auto; max-height: 10rem; object-fit: cover; margin: 0 auto; }  
377	#${pdfCarrusel} .slick-item { padding: 1rem; }  
378	#${pdfCarrusel} .slick-item[aria-hidden=true] { visibility: hidden; height: 0; }  
379	#${pdfCarrusel} .tag-title a{ font-size: 1.4rem; text-transform: uppercase; transform: scaleX(0.9); transform-origin: left; color:#CB4F40; }  
380	#${pdfCarrusel} .tag-download{ font-size: 1rem; }  
381	#${pdfCarrusel} .link-pdf { font-size: 1rem; color: #0078BF; }  
382	</style>  
383	 
384	 
385	 
386	<link rel="stylesheet" type="text/css" href="slick/slick.css"/>  
387	<link rel="stylesheet" type="text/css" href="slick/slick-theme.css"/>  
388	<script> 
389	        $(window).ready(function() { 
390	              if(typeof $.fn.slick === 'function'){ 
391	                var total = "${assetEntryList?size}"; 
392	                  $("#${pdfCarrusel} .pdf-carrusel:not(.slick-initialized)").slick({ 
393	                      dots: total>4, 
394	                      arrows: false, 
395	                      infinite: true, 
396	                      slidesToShow: 4, 
397	                      slidesToScroll: 4, 
398	                        responsive: [ 
399
400						      breakpoint: 1024, 
401						      settings: { 
402						        slidesToShow: 3, 
403						        slidesToScroll: 3, 
404						        infinite: true, 
405						        dots: true 
406
407						    }, 
408
409						      breakpoint: 600, 
410						      settings: { 
411						        slidesToShow: 2, 
412						        slidesToScroll: 2 
413
414						    }, 
415
416						      breakpoint: 480, 
417						      settings: { 
418						        slidesToShow: 1, 
419						        slidesToScroll: 1 
420
421
422						    // You can unslick at a given breakpoint now by adding: 
423						    // settings: "unslick" 
424						    // instead of a settings object 
425
426	                   }); 
427
428	        }); 
429	  </script>  
430   
431  <#else>		 	 
432<#assign usrRoles = user.getRoles()> 
433<#list usrRoles as usrRole> 
434    <#if usrRole.getName() == "Administrator"> 
435		<section class="pt-5 pb-5"> 
436			 <h5 class="text-uppercase text-center empty-message f-source-sans-pro"> 
437	 		 	<@liferay.language key="highlighted.search.results.empty"/> 
438			 </h5> 
439	    </section>		         
440    </#if>  
441</#list>  
442</#if>