Extend your trip to Spain with these 5 weekend breaks
When you can’t seem to break away, these weekend trips in Spain will satisfy your craving – for a little while, at least.

No matter how many tapas you eat, flamenco shows you watch or idyllic beaches you lounge on, Spain will always keep you wanting more. The good news: we have plenty of ideas. Whether you can’t seem to break away for more than a few days or want to explore somewhere beyond the major cities, these weekend trips will satisfy your craving…for a little while, at least.
Each of these weekends is a starting point: you’ll find three must-see or surprising experiences, but you could also tie together multiple weekends to build a larger trip.
1. Discover Galicia between land and sea
Tucked into the extreme northwest of Spain, Galicia is a land of character, strongly marked by its Celtic roots. Dotted with small fishing ports, its jagged coastline presents a spellbinding landscape. The hilly interior is greener, with a multitude of peaceful villages alongside a scattering of cultured cities; among the latter, Santiago de Compostela holds a special place. With its labyrinth of narrow streets and medieval atmosphere, the city sees its grand square, Praza do Obradoiro, host the emotional arrival of pilgrims who have walked the Camino de Santiago to the city’s soaring, richly ornate cathedral.
Where to stay: In Santiago de Compostela, the modern Moure Hotel offers elegant rooms equipped with comfortable designer furnishings and is a short walk from the cathedral.
How to get there: There are airports in Vigo, A Coruña and Santiago de Compostela, the latter with the best range of national and international connections. Bus and train services connect Galicia’s major towns and cities, but renting a car can be the easiest way to get around.
When to visit: Like the rest of Galicia (and across Spain), Santiago de Compostela celebrates its patron saint, St James, over 10 days leading up to July 25. Events culminate in a superb fireworks display on July 24; the next day, high mass at the cathedral is the focus of Galicia Day celebrations, which draw large crowds to Santiago.Exception: The parser function of type "canto_collage" is not defined. Define your custom parser functions as: https://github.com/shuqikhor/editorjs-html-php#extend-for-custom-blocks in /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php:70 Stack trace: #0 /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php(17): edjsHTML::parse_function_error('canto_collage') #1 [internal function]: edjsHTML::parse_block(Array) #2 /code/web/modules/custom/editorjs_custom_plugins/src/Parser/CustomParser.php(28): array_map(Array, Array) #3 /code/web/modules/custom/aws_event_pipeline/src/Mappers/v1/ArticleMapper.php(123): Drupal\editorjs_custom_plugins\Parser\CustomParser::parse(Array) #4 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(168): Drupal\aws_event_pipeline\Mappers\v1\ArticleMapper->toAwsPayload(Object(Drupal\node\Entity\Node)) #5 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(151): Drupal\aws_event_pipeline\AwsFormatter->getPayload(Object(Drupal\node\Entity\Node), Array) #6 /code/web/modules/custom/aws_event_pipeline/src/AwsEventSync.php(174): Drupal\aws_event_pipeline\AwsFormatter->getAwsMessage(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent), Array) #7 /code/web/modules/custom/aws_event_pipeline/src/Plugin/QueueWorker/AepQueueProcessor.php(177): Drupal\aws_event_pipeline\AwsEventSync->sendToAws(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #8 /code/web/modules/contrib/ultimate_cron/src/QueueWorker.php(111): Drupal\aws_event_pipeline\Plugin\QueueWorker\AepQueueProcessor->processItem(Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #9 [internal function]: Drupal\ultimate_cron\QueueWorker->queueCallback(Object(Drupal\ultimate_cron\Entity\CronJob)) #10 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(325): call_user_func(Array, Object(Drupal\ultimate_cron\Entity\CronJob)) #11 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(471): Drupal\ultimate_cron\Entity\CronJob->invokeCallback() #12 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(213): Drupal\ultimate_cron\Entity\CronJob->run(Object(Drupal\Core\StringTranslation\TranslatableMarkup)) #13 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(334): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launch(Object(Drupal\ultimate_cron\Entity\CronJob)) #14 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(309): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->runThread('6139496', 1, Array) #15 /code/web/modules/contrib/ultimate_cron/src/UltimateCron.php(64): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launchJobs(Array) #16 /code/web/modules/contrib/ultimate_cron/src/ProxyClass/UltimateCron.php(70): Drupal\ultimate_cron\UltimateCron->run() #17 /code/web/core/modules/system/src/CronController.php(46): Drupal\ultimate_cron\ProxyClass\UltimateCron->run() #18 [internal function]: Drupal\system\CronController->run() #19 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array) #20 /code/web/core/lib/Drupal/Core/Render/Renderer.php(592): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #21 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #22 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) #23 /code/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #24 /code/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #25 /code/web/modules/contrib/redirect_after_login/src/RedirectMiddleware.php(44): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #26 /code/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Drupal\redirect_after_login\RedirectMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #27 /code/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #28 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(191): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #29 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(128): Drupal\page_cache\StackMiddleware\PageCache->fetch(Object(Symfony\Component\HttpFoundation\Request), 1, true) #30 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(82): Drupal\page_cache\StackMiddleware\PageCache->lookup(Object(Symfony\Component\HttpFoundation\Request), 1, true) #31 /code/vendor/asm89/stack-cors/src/Cors.php(53): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #32 /code/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Asm89\Stack\Cors->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #33 /code/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #34 /code/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #35 /code/web/core/lib/Drupal/Core/DrupalKernel.php(704): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #36 /code/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #37 {main}
What to do
Hike in Cabo Fisterra
There’s great hiking along the length of the Galician coastline, but Cabo Fisterra on the remote Costa da Morte is particularly alluring. Especially beautiful as a sunset-watching spot, this immense rocky promontory, overlooked by a lighthouse, has a definite "end of the world" feel – appropriately so, as this is the journey’s end for many Compostela pilgrims, who ritually burn their hiking gear here to mark the end of their walk.
Admire Galicia’s Atlantic archipelago
Nestled in the Parque Nacional de las Islas Atlánticas de Galicia and ringed by glorious white-sand beaches lie the paradisiacal Illas Cíes. This island trio is home to abundant birdlife (terns, cormorants, petrels, shearwaters and auks are year-round residents). As well as swimming and snorkeling, you can hike from deserted coves to breathtaking viewpoints.
Climb the majestic Monte Pindo
The coastal village of O Pindo is the starting point for a remote but rewarding hike of moderate difficulty. To reach the summit of the Celtic Olympus, you’ll have to pick your way through an extraordinary tableau of granite formations. At the top, the views open up, revealing a 360-degree panorama of the ocean and bay below.
2. Explore Euskadi between Bilbao and San Sebastián
With its world-renowned architecture and dynamic dining scene, the Euskadi (Basque Country) capital of Bilbao is a worthy gateway to the coastline west toward San Sebastián, about an hour’s drive away. Frank Gehry’s iconic Museo Guggenheim Bilbao sparked the regeneration of the Ensanche district, which the compact Casco Viejo (Old Town) complements as an atmospheric counterpart. Northwest of Bilbao, Cabo de Matxitxako is Euskadi’s most northerly point; nearby, the much-photographed islet of San Juan de Gaztelugatxe, accessible by a snaking stone pathway from the mainland, served as Dragonstone castle in Game of Thrones. There’s more astonishing scenery all the way to San Sebastián, where the San Telmo Museoa explores Basque history and culture.
Where to stay: Bilder Boutique Hotel is a modern, centrally located option in Bilbao’s Casco Viejo. In San Sebastián, spend the night right across the street from Playa de la Concha at Hotel de Londres y de Inglaterra.
How to get there: Bilbao International Airport has flights from all across Europe; the airport in San Sebastián has connections to major Spanish cities. Getting to Bilbao by rail can be a slow business, though new high-speed links are slated.
Where to eat: While undeniably delicious, pintxos (Basque tapas) are more of a light bite than a full-blown meal; more substantial Basque specialties include kokotxas (fish stew) and bacalao al pil pil (salt cod in a garlicky, spicy sauce). For a gastronomic splurge, book well ahead for three-Michelin-starred Azurmendi or one-starred Eneko in Larrabetzu, near Bilbao; in San Sebastián, try three-starred Arzak.Exception: The parser function of type "canto_diptych" is not defined. Define your custom parser functions as: https://github.com/shuqikhor/editorjs-html-php#extend-for-custom-blocks in /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php:70 Stack trace: #0 /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php(17): edjsHTML::parse_function_error('canto_diptych') #1 [internal function]: edjsHTML::parse_block(Array) #2 /code/web/modules/custom/editorjs_custom_plugins/src/Parser/CustomParser.php(28): array_map(Array, Array) #3 /code/web/modules/custom/aws_event_pipeline/src/Mappers/v1/ArticleMapper.php(123): Drupal\editorjs_custom_plugins\Parser\CustomParser::parse(Array) #4 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(168): Drupal\aws_event_pipeline\Mappers\v1\ArticleMapper->toAwsPayload(Object(Drupal\node\Entity\Node)) #5 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(151): Drupal\aws_event_pipeline\AwsFormatter->getPayload(Object(Drupal\node\Entity\Node), Array) #6 /code/web/modules/custom/aws_event_pipeline/src/AwsEventSync.php(174): Drupal\aws_event_pipeline\AwsFormatter->getAwsMessage(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent), Array) #7 /code/web/modules/custom/aws_event_pipeline/src/Plugin/QueueWorker/AepQueueProcessor.php(177): Drupal\aws_event_pipeline\AwsEventSync->sendToAws(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #8 /code/web/modules/contrib/ultimate_cron/src/QueueWorker.php(111): Drupal\aws_event_pipeline\Plugin\QueueWorker\AepQueueProcessor->processItem(Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #9 [internal function]: Drupal\ultimate_cron\QueueWorker->queueCallback(Object(Drupal\ultimate_cron\Entity\CronJob)) #10 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(325): call_user_func(Array, Object(Drupal\ultimate_cron\Entity\CronJob)) #11 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(471): Drupal\ultimate_cron\Entity\CronJob->invokeCallback() #12 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(213): Drupal\ultimate_cron\Entity\CronJob->run(Object(Drupal\Core\StringTranslation\TranslatableMarkup)) #13 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(334): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launch(Object(Drupal\ultimate_cron\Entity\CronJob)) #14 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(309): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->runThread('6139496', 1, Array) #15 /code/web/modules/contrib/ultimate_cron/src/UltimateCron.php(64): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launchJobs(Array) #16 /code/web/modules/contrib/ultimate_cron/src/ProxyClass/UltimateCron.php(70): Drupal\ultimate_cron\UltimateCron->run() #17 /code/web/core/modules/system/src/CronController.php(46): Drupal\ultimate_cron\ProxyClass\UltimateCron->run() #18 [internal function]: Drupal\system\CronController->run() #19 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array) #20 /code/web/core/lib/Drupal/Core/Render/Renderer.php(592): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #21 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #22 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) #23 /code/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #24 /code/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #25 /code/web/modules/contrib/redirect_after_login/src/RedirectMiddleware.php(44): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #26 /code/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Drupal\redirect_after_login\RedirectMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #27 /code/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #28 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(191): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #29 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(128): Drupal\page_cache\StackMiddleware\PageCache->fetch(Object(Symfony\Component\HttpFoundation\Request), 1, true) #30 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(82): Drupal\page_cache\StackMiddleware\PageCache->lookup(Object(Symfony\Component\HttpFoundation\Request), 1, true) #31 /code/vendor/asm89/stack-cors/src/Cors.php(53): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #32 /code/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Asm89\Stack\Cors->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #33 /code/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #34 /code/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #35 /code/web/core/lib/Drupal/Core/DrupalKernel.php(704): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #36 /code/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #37 {main}
What to do
Surf the legendary left at Mundaka
Euskadi’s wonderful waves have long been renowned in the surfing world, and the breaks at Mundaka – a fishing port at the mouth of a river where a sandbar forms fast, hollow waves – are legendary. Surfers flock in to brave Mundaka’s famed left-hand wave; those not up to the challenge can watch the spectacle from the town’s harbor walls. Other good places to catch a wave along the coast: Zarautz, Sopelana or the beaches of San Sebastián.
Birdwatch in the Urdaibai Reserve
Centered on the Mundaka estuary north of Gernika (Guernica) and extending down to the sea over some 220 sq km (85 sq miles) of constantly evolving water flows, mudflats, marshes and forests, the Urdaibai Biosphere Reserve is an important stopover for migratory birds. The impressive Urdaibai Bird Center, close to the village of Gautegiz-Arteaga, operates birdwatching hides throughout the reserve; head to Cabo de Matxitxako to see a wealth of seabirds.
Follow the art trail in San Sebastián
San Sebastián is an open-air museum of contemporary art; tracking down the sculptures scattered around its streets is an excellent way to get to know the city. Among the most imposing are Eduardo Chillida’s The Comb of the Wind, at the western end of the hallowed Playa de la Concha, and Jorge Oteiza’s Empty Construction, which stands on the Paseo Nuevo.
3. Follow the Dalí trail in Catalonia
Born in the Catalan village of Figueres in 1904, Salvador Dalí became the best-known exponent of the surrealist movement, his art known the world over. A printmaker, painter and sculptor, with an equal curiosity for cinema and photography alongside a ferocious talent for self-promotion, Dalí left his eccentric mark on the Catalan hinterland and the Costa Brava.
Where to stay: For a unique village stay with gorgeous bay or mountain views, book one of the three rooms over the Cap de Creus restaurant in Cadaqués.
How to get there: Figueres makes an excellent base, with Renfe train connections from Girona in under 30 minutes, Barcelona (one to two hours), Marseille and Lyon (around four hours), and Paris (five and a half hours). Buses also run to Cadaqués; the journey time is about an hour.
When to visit: Figueres’ Teatre-Museu Dalí is crowded in high season, when it’s best to avoid visiting at weekends if possible. In mid-May, during the Temps de Flors festival, the whole of Girona is decked out in fantastical floral arrangements. Exception: The parser function of type "canto_collage" is not defined. Define your custom parser functions as: https://github.com/shuqikhor/editorjs-html-php#extend-for-custom-blocks in /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php:70 Stack trace: #0 /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php(17): edjsHTML::parse_function_error('canto_collage') #1 [internal function]: edjsHTML::parse_block(Array) #2 /code/web/modules/custom/editorjs_custom_plugins/src/Parser/CustomParser.php(28): array_map(Array, Array) #3 /code/web/modules/custom/aws_event_pipeline/src/Mappers/v1/ArticleMapper.php(123): Drupal\editorjs_custom_plugins\Parser\CustomParser::parse(Array) #4 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(168): Drupal\aws_event_pipeline\Mappers\v1\ArticleMapper->toAwsPayload(Object(Drupal\node\Entity\Node)) #5 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(151): Drupal\aws_event_pipeline\AwsFormatter->getPayload(Object(Drupal\node\Entity\Node), Array) #6 /code/web/modules/custom/aws_event_pipeline/src/AwsEventSync.php(174): Drupal\aws_event_pipeline\AwsFormatter->getAwsMessage(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent), Array) #7 /code/web/modules/custom/aws_event_pipeline/src/Plugin/QueueWorker/AepQueueProcessor.php(177): Drupal\aws_event_pipeline\AwsEventSync->sendToAws(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #8 /code/web/modules/contrib/ultimate_cron/src/QueueWorker.php(111): Drupal\aws_event_pipeline\Plugin\QueueWorker\AepQueueProcessor->processItem(Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #9 [internal function]: Drupal\ultimate_cron\QueueWorker->queueCallback(Object(Drupal\ultimate_cron\Entity\CronJob)) #10 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(325): call_user_func(Array, Object(Drupal\ultimate_cron\Entity\CronJob)) #11 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(471): Drupal\ultimate_cron\Entity\CronJob->invokeCallback() #12 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(213): Drupal\ultimate_cron\Entity\CronJob->run(Object(Drupal\Core\StringTranslation\TranslatableMarkup)) #13 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(334): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launch(Object(Drupal\ultimate_cron\Entity\CronJob)) #14 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(309): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->runThread('6139496', 1, Array) #15 /code/web/modules/contrib/ultimate_cron/src/UltimateCron.php(64): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launchJobs(Array) #16 /code/web/modules/contrib/ultimate_cron/src/ProxyClass/UltimateCron.php(70): Drupal\ultimate_cron\UltimateCron->run() #17 /code/web/core/modules/system/src/CronController.php(46): Drupal\ultimate_cron\ProxyClass\UltimateCron->run() #18 [internal function]: Drupal\system\CronController->run() #19 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array) #20 /code/web/core/lib/Drupal/Core/Render/Renderer.php(592): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #21 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #22 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) #23 /code/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #24 /code/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #25 /code/web/modules/contrib/redirect_after_login/src/RedirectMiddleware.php(44): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #26 /code/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Drupal\redirect_after_login\RedirectMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #27 /code/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #28 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(191): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #29 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(128): Drupal\page_cache\StackMiddleware\PageCache->fetch(Object(Symfony\Component\HttpFoundation\Request), 1, true) #30 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(82): Drupal\page_cache\StackMiddleware\PageCache->lookup(Object(Symfony\Component\HttpFoundation\Request), 1, true) #31 /code/vendor/asm89/stack-cors/src/Cors.php(53): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #32 /code/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Asm89\Stack\Cors->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #33 /code/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #34 /code/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #35 /code/web/core/lib/Drupal/Core/DrupalKernel.php(704): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #36 /code/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #37 {main}
What to do
Delve into Dalí’s world at his museum
In the early 1970s, at the suggestion of the Figueres mayor, Dalí transformed the former municipal theater into the extravagant Teatre-Museu Dalí. With red walls studded with concrete croissants and topped by a vast glass dome, it’s an appropriate final resting place for the master of surrealism, who lies in a crypt beneath the former stage. The 1500 works in the collection include the Mae West room; the Rainy Taxi installation, a statue-topped Cadillac that "rains" on the mannequins inside; and paintings from Soft Self-Portrait with Fried Bacon to the monstrous Portrait of Picasso.
Stroll between art and reality in Cadaqués
“I am inseparable from this sky, from this sea, from these rocks,” wrote Dalí, who had an enduring love affair with Cadaqués, the village and its surrounds featuring in many of his paintings. Nestled in a rocky bay with pebble beaches and secluded coves, and with a mix of Modernista and traditional homes spreading back from the coast, the village was the birthplace of Dalí’s father, and the artist spent holidays there as a child and teen before buying his Port Lligat home.
Admire the surreal landscapes of Cap de Creus
Spreading inland across the cape from Cadaqués and Port Lligat, the rugged, lunar-like landscapes of Parc Natural del Cap de Creus were a major inspiration for Dalí’s work. The best way to immerse yourself in this bewitching landscape, pummeled by the Tramontana winds, is to hike a section of the GR 92. The route passes through almost all the municipalities in the park, as well as winding through the birding hot spot of Parc Natural dels Aiguamolls de l’Empordà.
4. Take the pulse of the Mediterranean in Mallorca
Sitting pretty in the Mediterranean Sea off the Iberian Peninsula’s northeast coast, the Balearics bring together islands with very different atmospheres. If Ibiza is famous for its parties, neighboring Formentera is known for its gentle way of life and white sandy beaches; if Menorca surprises with the richness of its UNESCO Biosphere Reserve, Mallorca manages to deliver all of the above, concentrated in one little island.
Where to stay: With just a few days, base yourself in Palma de Mallorca’s Old Town. Hotel Basilica is a beautiful boutique property in an old manor located next to the Basilica of San Francisco.
How to get there: Numerous low-cost seasonal flights from European destinations arrive at Palma's international airport. Boat travel is also an option, with ferries operating between various towns on the Spanish coast (Alicante, Barcelona, Dénia and Valencia) and the island. From France, Corsica Ferries crosses from Toulon to Alcúdia in northeast Mallorca three times a week.
When to visit: Staged over the last weekend before Lent, Mallorca’s Carnaval sees parades, street parties and live music in towns across the island, with the biggest events in Palma. One of Mallorca’s most popular festivals, celebrating Palma’s patron saint, the Festa Sant Sebastià takes place in January, with two weeks of cultural activities, sporting events and shows.Exception: The parser function of type "canto_diptych" is not defined. Define your custom parser functions as: https://github.com/shuqikhor/editorjs-html-php#extend-for-custom-blocks in /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php:70 Stack trace: #0 /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php(17): edjsHTML::parse_function_error('canto_diptych') #1 [internal function]: edjsHTML::parse_block(Array) #2 /code/web/modules/custom/editorjs_custom_plugins/src/Parser/CustomParser.php(28): array_map(Array, Array) #3 /code/web/modules/custom/aws_event_pipeline/src/Mappers/v1/ArticleMapper.php(123): Drupal\editorjs_custom_plugins\Parser\CustomParser::parse(Array) #4 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(168): Drupal\aws_event_pipeline\Mappers\v1\ArticleMapper->toAwsPayload(Object(Drupal\node\Entity\Node)) #5 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(151): Drupal\aws_event_pipeline\AwsFormatter->getPayload(Object(Drupal\node\Entity\Node), Array) #6 /code/web/modules/custom/aws_event_pipeline/src/AwsEventSync.php(174): Drupal\aws_event_pipeline\AwsFormatter->getAwsMessage(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent), Array) #7 /code/web/modules/custom/aws_event_pipeline/src/Plugin/QueueWorker/AepQueueProcessor.php(177): Drupal\aws_event_pipeline\AwsEventSync->sendToAws(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #8 /code/web/modules/contrib/ultimate_cron/src/QueueWorker.php(111): Drupal\aws_event_pipeline\Plugin\QueueWorker\AepQueueProcessor->processItem(Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #9 [internal function]: Drupal\ultimate_cron\QueueWorker->queueCallback(Object(Drupal\ultimate_cron\Entity\CronJob)) #10 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(325): call_user_func(Array, Object(Drupal\ultimate_cron\Entity\CronJob)) #11 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(471): Drupal\ultimate_cron\Entity\CronJob->invokeCallback() #12 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(213): Drupal\ultimate_cron\Entity\CronJob->run(Object(Drupal\Core\StringTranslation\TranslatableMarkup)) #13 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(334): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launch(Object(Drupal\ultimate_cron\Entity\CronJob)) #14 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(309): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->runThread('6139496', 1, Array) #15 /code/web/modules/contrib/ultimate_cron/src/UltimateCron.php(64): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launchJobs(Array) #16 /code/web/modules/contrib/ultimate_cron/src/ProxyClass/UltimateCron.php(70): Drupal\ultimate_cron\UltimateCron->run() #17 /code/web/core/modules/system/src/CronController.php(46): Drupal\ultimate_cron\ProxyClass\UltimateCron->run() #18 [internal function]: Drupal\system\CronController->run() #19 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array) #20 /code/web/core/lib/Drupal/Core/Render/Renderer.php(592): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #21 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #22 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) #23 /code/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #24 /code/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #25 /code/web/modules/contrib/redirect_after_login/src/RedirectMiddleware.php(44): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #26 /code/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Drupal\redirect_after_login\RedirectMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #27 /code/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #28 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(191): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #29 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(128): Drupal\page_cache\StackMiddleware\PageCache->fetch(Object(Symfony\Component\HttpFoundation\Request), 1, true) #30 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(82): Drupal\page_cache\StackMiddleware\PageCache->lookup(Object(Symfony\Component\HttpFoundation\Request), 1, true) #31 /code/vendor/asm89/stack-cors/src/Cors.php(53): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #32 /code/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Asm89\Stack\Cors->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #33 /code/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #34 /code/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #35 /code/web/core/lib/Drupal/Core/DrupalKernel.php(704): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #36 /code/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #37 {main}
What to do
Find portside perfection in Palma
With its honey-colored buildings stretching back from the Badia de Palma, Mallorca’s capital is a handsome introduction to the island. The headline attraction is the splendid Catedral de Mallorca, built on the water in Catalan Gothic style – it’s a sight to behold, especially at sunset. Other highlights include the Palau de l’Almudaina, the official residence of the Spanish monarchy, and the Convent de Santa Clara, built in the 16th and 17th centuries, where the nuns sell sweet treats like rollitos de anís (aniseed rolls) to visitors.
Indulge in Mallorcan nightlife
Party people from all over the world flock to Palma’s clubs, beach bars and pubs year-round. In the buzzing Santa Catalina district, enjoy a drink while sampling regional specialties like pa amb oli (bread seasoned with olive oil and tomato, and topped with cured ham and cheese) or the famous sobrasada (a spicy sausage). Lined with bars and restaurants overlooking the harbor, seafront Paseo Marítimo is another popular spot.
Go underground at Porto Cristo
They’re no secret, but even given the crowds of visitors, it’s well worth heading to the family resort of Porto Cristo to explore the Coves del Drac. During the hour-long tour, you’ll admire stalactites and stalagmites illuminated by a beautiful light show and take a turn in a boat on an underground lake.
5. Take a culture trip in Granada and the Almería province
Granada is best known for its Alhambra, the sublime legacy of Moorish rule in Andalucía between the 8th and 15th centuries. Its rich architectural heritage also includes cármenes, private houses of Moorish origin, whose high walls conceal superb terraced gardens. Just outside Granada, the Sierra Nevada mountain range delights nature lovers and outdoor enthusiasts, some taking up the challenge of climbing the highest peak on the Spanish mainland, the 3479m (11,414ft) Mulhacén, or skiing in Europe’s most southerly resort. In the Almería region, you can make like a cowhand in the Western-themed parks of the Tabernas Desert, or take the coast road to the west or east of the province’s eponymous city to explore a wild coastline.
Where to stay: Spend your nights in one of Casa Morisca’s Moorish-style rooms in the heart of old town Granada, right by the Alhambra.
How to get there: The airports in Granada and Almería are served by direct flights from London, Paris and other European hubs, as well as domestic services within Spain.
When to visit: In June and July, Granada hosts the prestigious Festival Internacional de Música y Danza, with classical music concerts in venues all around the city as well as live flamenco and world-music shows. In November, it’s the turn of the Festival Internacional de Jazz. The Feria de Almería takes place in the port city over nine days in late August, with parties, concerts, fairground rides and exhibitions.Exception: The parser function of type "canto_diptych" is not defined. Define your custom parser functions as: https://github.com/shuqikhor/editorjs-html-php#extend-for-custom-blocks in /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php:70 Stack trace: #0 /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php(17): edjsHTML::parse_function_error('canto_diptych') #1 [internal function]: edjsHTML::parse_block(Array) #2 /code/web/modules/custom/editorjs_custom_plugins/src/Parser/CustomParser.php(28): array_map(Array, Array) #3 /code/web/modules/custom/aws_event_pipeline/src/Mappers/v1/ArticleMapper.php(123): Drupal\editorjs_custom_plugins\Parser\CustomParser::parse(Array) #4 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(168): Drupal\aws_event_pipeline\Mappers\v1\ArticleMapper->toAwsPayload(Object(Drupal\node\Entity\Node)) #5 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(151): Drupal\aws_event_pipeline\AwsFormatter->getPayload(Object(Drupal\node\Entity\Node), Array) #6 /code/web/modules/custom/aws_event_pipeline/src/AwsEventSync.php(174): Drupal\aws_event_pipeline\AwsFormatter->getAwsMessage(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent), Array) #7 /code/web/modules/custom/aws_event_pipeline/src/Plugin/QueueWorker/AepQueueProcessor.php(177): Drupal\aws_event_pipeline\AwsEventSync->sendToAws(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #8 /code/web/modules/contrib/ultimate_cron/src/QueueWorker.php(111): Drupal\aws_event_pipeline\Plugin\QueueWorker\AepQueueProcessor->processItem(Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #9 [internal function]: Drupal\ultimate_cron\QueueWorker->queueCallback(Object(Drupal\ultimate_cron\Entity\CronJob)) #10 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(325): call_user_func(Array, Object(Drupal\ultimate_cron\Entity\CronJob)) #11 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(471): Drupal\ultimate_cron\Entity\CronJob->invokeCallback() #12 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(213): Drupal\ultimate_cron\Entity\CronJob->run(Object(Drupal\Core\StringTranslation\TranslatableMarkup)) #13 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(334): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launch(Object(Drupal\ultimate_cron\Entity\CronJob)) #14 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(309): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->runThread('6139496', 1, Array) #15 /code/web/modules/contrib/ultimate_cron/src/UltimateCron.php(64): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launchJobs(Array) #16 /code/web/modules/contrib/ultimate_cron/src/ProxyClass/UltimateCron.php(70): Drupal\ultimate_cron\UltimateCron->run() #17 /code/web/core/modules/system/src/CronController.php(46): Drupal\ultimate_cron\ProxyClass\UltimateCron->run() #18 [internal function]: Drupal\system\CronController->run() #19 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array) #20 /code/web/core/lib/Drupal/Core/Render/Renderer.php(592): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #21 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #22 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) #23 /code/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #24 /code/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #25 /code/web/modules/contrib/redirect_after_login/src/RedirectMiddleware.php(44): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #26 /code/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Drupal\redirect_after_login\RedirectMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #27 /code/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #28 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(191): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #29 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(128): Drupal\page_cache\StackMiddleware\PageCache->fetch(Object(Symfony\Component\HttpFoundation\Request), 1, true) #30 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(82): Drupal\page_cache\StackMiddleware\PageCache->lookup(Object(Symfony\Component\HttpFoundation\Request), 1, true) #31 /code/vendor/asm89/stack-cors/src/Cors.php(53): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #32 /code/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Asm89\Stack\Cors->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #33 /code/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #34 /code/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #35 /code/web/core/lib/Drupal/Core/DrupalKernel.php(704): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #36 /code/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #37 {main}
What to do
Explore Granada’s ancient cave houses
Granada’s Sacromonte quarter offers superb views over to the Alhambra, but it has its own cultural draws. The area was once a stronghold of the Roma community, many of whom lived in homes built in the naturally abundant caves of the Sierra Nevada foothills here; the earliest date back to the 16th century. You can explore cave homes, furnished in traditional style, at the Museo Cuevas del Sacromonte; flamenco shows in the Granaína style are also staged in several Sacromonte caves. For more underground allure, head to the catacombs and underground chapels of the 17th-century Abadía del Sacromonte.
Go Wild West in the Tabernas Desert
Some 30km (19 miles) north of the city of Almería, this scrubby desert may well seem familiar, having served as the setting for many of Sergio Leone’s spaghetti westerns, as well as episodes of Game of Thrones. With mocked-up Western-style towns and saloon bars, the Fort Bravo and MiniHollywood Oasys theme parks offer an immersive dive into the Wild West of the silver screen, complete with cancan shows and staged shootouts.
Hike in the Sierra Nevada
Those snowcapped peaks that provide the backdrop to Granada’s Alhambra are just a small part of the Parque Nacional Sierra Nevada, home to the Iberian ibex and all kinds of plant species. Hikers take on multiday itineraries across this mighty mountain range; its lower southern reaches, dotted with picturesque white villages, are known as Las Alpujarras. The villages of Pampaneira, Bubión and Capileira are popular starting points for hikes of varying length and difficulty.
This article was adapted from Lonely Planet's 100 Weekends in Europe.