Startseiten-CMS-Anbindung abschließen

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin Adametz 2026-05-28 15:04:21 +00:00
parent 754aa699a1
commit 45150780de
22 changed files with 28191 additions and 2362 deletions

View file

@ -52,9 +52,9 @@
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="efbd59ab-4d18-411e-9bfa-47bbd4f9db28" data-blockingmode="auto" type="text/javascript"></script>
<link rel="manifest" href="/manifest.json">
{% block canonical_tag %}
@ -88,6 +88,17 @@
gtag('config', 'G-Y1Y779PDME');
</script>
<script>
(function (c, s, q, u, a, r, e) {
c.hj=c.hj||function(){(c.hj.q=c.hj.q||[]).push(arguments)};
c._hjSettings = { hjid: a };
r = s.getElementsByTagName('head')[0];
e = s.createElement('script');
e.async = true;
e.src = q + c._hjSettings.hjid + u;
r.appendChild(e);
})(window, document, 'https://static.hj.contentsquare.net/c/csq-', '.js', 5350061);
</script>
{% block stylesheets %}
{% endblock stylesheets %}
@ -99,7 +110,12 @@
</head>
<style>
@media (min-width: 992px) and (max-width: 1200px ) {
.topMain.nav-pills>li>a {
padding: .5rem .8rem;
margin-right: .4rem;
}
}
</style>
<body class="no-js">
<div id="wrapper">
@ -116,7 +132,7 @@
<div class="home-message text-center small">
<div class="home-info-box">
<div id="eKomiSeal_default" class="eKomi-header" style="padding-top: 5px;padding-left: 2px;">
<img class="lozad" border="0" src="{{ asset('images/dummy.png') }}" data-src="{{ asset('images/logo-qualitaet-22.png') }}" alt="Top Kundenservice" height="78">
<img class="lozad" border="0" src="{{ asset('images/dummy.png') }}" data-src="{{ asset('images/logo-qualitaet.png') }}" alt="Top Kundenservice" height="78">
</div>
<ul class="c4">
<li>Spezialist für Kulturreisen </li>
@ -152,7 +168,9 @@
</div>
<div id="sidebar" class="col-xs-12 col-sm-12 col-md-3 col-md-pull-9 order_first">
{% if site_loading is defined and page is defined %}
{% if dev_home_sidebar is defined %}
{% include 'default/components/sidebar/devHomeSidebar.html.twig' %}
{% elseif site_loading is defined and page is defined %}
{{ render(controller('AppBundle:Component:makeSidebarWidget', {'site_loading': site_loading, 'page': page})) }}
{% elseif site_loading is defined and api is defined %}
{{ render(controller('AppBundle:Component:makeSidebarWidget', {'site_loading': site_loading, 'page': null, 'api': api})) }}
@ -164,14 +182,7 @@
{% endif %}
{% endif %}
<div class="clearfix" style="margin-bottom: 10px; margin-top: 0;">
<div id="auorg-bg">
<a href="https://www.ausgezeichnet.org" target="_blank" title="Unabh&auml;ngige Bewertungen, Kundenbewertungen und G&uuml;tesiegel von AUSGEZEICHNET.ORG" class="auorg-br">
<span style="font-size:8px;font-weight:normal;text-transform:uppercase;">AUSGEZEICHNET.ORG</span>
</a>
</div>
</div>
</div><!-- end row -->
@ -184,14 +195,14 @@
{{ render(controller('AppBundle:Component:footer')) }}
<a class="js-go-to u-go-to-v1 animated" href="#!" data-type="fixed" data-offset-top="400" data-show-effect="zoomIn" data-hide-effect="zoomOut" data-position='{"bottom": 15, "right": 15 }'>
<a class="js-go-to u-go-to-v1 animated" href="#!" data-type="fixed" data-offset-top="400" data-show-effect="zoomIn" data-hide-effect="zoomOut" data-position='{"bottom": 65, "left": 12 }'>
<i class="icon-up-open-big"></i>
</a>
</div><!-- end wrapper -->
<!-- default modal -->
{% embed 'default/components/embed/modal.html.twig' with {id: 'default'} %}{% endembed %}
{% block javascripts %}
<script rel="preload" src="{{ asset('js/custom-min.js?v') }}{{ get_file_last_time('js/custom-min.js') }}" type="text/javascript" data-cookieconsent="necessary"></script>
@ -206,7 +217,6 @@
});
});
</script>
<script type="text/javascript" src="https://siegel.ausgezeichnet.org/widgets/js/55b648290cf257aef3483d90/widget.js" data-cookieconsent="marketing"></script><!-- Ausgezeichnet.org-Siegel: End -->
{% endblock javascripts %}
</body>

View file

@ -1,95 +1,106 @@
<section class="info-bar">
<div class="container">
<div class="row">
<div class="col-md-3 col-sm-6">
<i class="fa fa-phone-square text-success"></i>
<h3><a href="tel:030 - 700 94 100">030 - 700 94 100</a></h3>
<p>{% if(content.available.phone.active) %}
<span class="text-success">erreichbar</span>
{% else %}
erreichbar
{% endif %}
{{ content.available.phone.content }}</p>
</div>
<div class="col-md-3 col-sm-6">
<i class="fa fa-envelope text-success"></i>
<h3><a href="mailto:stern@sterntours.de">stern@sterntours.de</a></h3>
<p>schreiben Sie uns jederzeit</p>
</div>
<div class="col-md-3 col-sm-6">
<i class="fa fa-envelope-open text-success"></i>
<h3><a href="/kontakt">Kontaktformular</a></h3>
<p>oder nutzen Sie einfach unser:</p>
</div>
<div class="col-md-3 col-sm-6">
<i class="fa fa-users text-success"></i>
<h3><a href="/ueber-uns" title="Über uns">Über uns</a></h3>
<p>Erfahren Sie mehr über unser Reisebüro.</p>
</div>
</div>
</div>
</section>
<footer class="footer clearfix">
<div class="container">
<div class="row">
<div class="col-md-6 col-sm-6 col-xs-12">
<p class="hl4">Ihre Vorteile bei STERN TOURS</p>
<p>Unsere Produktauswahl ist vielfältig. Neben dem Pauschaltourismus und Jugendreisen sind wir auf individuelle Kulturreisen spezialisiert.</p>
<img class="left-img lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset('/images/STERN_22-Jahre.png') }}" alt="Stern Tours 20 Jahre">
<ul class="c4">
<li>Spezialist seit 1998</li>
<li>Top Service</li>
<li>Riesen Auswahl</li>
<li>Individuelle Beratung</li>
</ul>
</div><!-- end col -->
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="row">
<div class="col-md-6" style="margin-bottom: 1rem;">
<p class="hl4">Reiseversicherung</p>
{% image '@AppBundle/Resources/public/images/logos/rundv.png' %}
<img class="img-responsive lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset_url }}" alt="R + V">
{% endimage %}
</div>
<div class="col-md-6">
<p class="hl4">Sicherheit</p>
{% image '@AppBundle/Resources/public/images/logos/ssl.png' %}
<img class="left-img lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset_url }}" alt="SSL" style="margin-top: 0.3rem;">
{% endimage %}
</div>
</div>
</div>
</div>
<div class="clearfix padding-bottom"></div>
</div><!-- end container -->
</footer><!-- end copyrights -->
<div class="copyrights clearfix" style="padding-bottom:270px;">
<div class="container">
<div class="row">
<div class="col-md-4 text-left">
<p>STERN TOURS © {{ 'now'|date('Y') }}</p>
</div><!-- end col -->
<div class="col-md-8 text-right">
<div class="link-footer">
<a href="/impressum" title="Impressum">Impressum</a> |
<a href="/arb" title="ARB">ARB</a> |
<a href="/datenschutz" title="Datenschutzerklärung">Datenschutzerklärung</a> |
<a href="/bildnachweis" title="Bildnachweise">Bildnachweise</a> |
<a href="/sitemap" title="Sitemap">Sitemap</a>
</div><!-- end social-footer -->
</div><!-- end col -->
</div><!-- end row -->
</div><!-- end container -->
</div><!-- end copyrights -->
<section class="info-bar">
<div class="container">
<div class="row">
<div class="col-md-3 col-sm-6">
<i class="fa fa-phone-square text-success"></i>
<h3><a href="tel:030 - 700 94 100">030 - 700 94 100</a></h3>
<p>{% if(content.available.phone.active) %}
<span class="text-success">erreichbar</span>
{% else %}
erreichbar
{% endif %}
{{ content.available.phone.content }}</p>
</div>
<div class="col-md-3 col-sm-6">
<i class="fa fa-envelope text-success"></i>
<h3><a href="mailto:stern@sterntours.de">stern@sterntours.de</a></h3>
<p>schreiben Sie uns jederzeit</p>
</div>
<div class="col-md-3 col-sm-6">
<i class="fa fa-envelope-open text-success"></i>
<h3><a href="/kontakt">Kontaktformular</a></h3>
<p>oder nutzen Sie einfach unser:</p>
</div>
<div class="col-md-3 col-sm-6">
<i class="fa fa-users text-success"></i>
<h3><a href="/ueber-uns" title="Über uns">Über uns</a></h3>
<p>Erfahren Sie mehr über unser Reisebüro.</p>
</div>
</div>
</div>
</section>
<footer class="footer clearfix">
<div class="container">
<div class="row">
<div class="col-md-5 col-sm-6 col-xs-12">
<p class="hl4">Ihre Vorteile bei STERN TOURS</p>
<p>Unsere Produktauswahl ist vielfältig. Neben dem Pauschaltourismus sind wir auf individuelle Kulturreisen spezialisiert.</p>
<img class="left-img lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset('/images/STERN_1998.png') }}" alt="Stern Tours seit 1998">
<ul class="c4">
<li>Spezialist seit 1998</li>
<li>Top Service</li>
<li>Riesen Auswahl</li>
<li>Individuelle Beratung</li>
</ul>
</div><!-- end col -->
<div class="col-md-7 col-sm-6 col-xs-12">
<div class="row">
<div class="col-md-6 col-xs-12" style="margin-bottom: 1rem;">
<p class="hl4">Reiseversicherung</p>
{% image '@AppBundle/Resources/public/images/logos/rundv.png' %}
<img class="img-responsive lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset_url }}" alt="R + V">
{% endimage %}
<p class="hl4">Sicherheit</p>
{% image '@AppBundle/Resources/public/images/logos/ssl.png' %}
<img class="left-img lozad" src="{{ asset('/images/dummy.png') }}" data-src="{{ asset_url }}" alt="SSL" style="margin-top: 0.3rem;">
{% endimage %}
</div>
<div class="col-md-6 col-xs-12">
<div style="padding: 20px 0 0 0;"> </div>
<a href="/ueber-uns#atmosfair"><img class="img-responsive lozad" src="{{ asset('/images/dummy.png') }}" style="max-width: 300px;" data-src="/docs/images/logo_atmosfair_blue.png" alt="atmosfair"></a>
<div style="padding: 20px 0 0 0;"> </div>
<a href="/ueber-uns#atmosfair" style="color: #fff; text-decoration: none; font-size: 1.2rem;">&gt; mehr erfahren</a>
</div>
</div>
</div>
</div>
<div class="clearfix padding-bottom"></div>
</div><!-- end container -->
</footer><!-- end copyrights -->
<div class="copyrights clearfix" style="padding-bottom:270px;">
<div class="container">
<div class="row">
<div class="col-md-4 text-left">
<p>STERN TOURS © {{ 'now'|date('Y') }}</p>
</div><!-- end col -->
<div class="col-md-8 text-right">
<div class="link-footer">
<a href="/impressum" title="Impressum">Impressum</a> |
<a href="/arb" title="ARB">ARB</a> |
<a href="/datenschutz" title="Datenschutzerklärung">Datenschutzerklärung</a> |
<a href="/bildnachweis" title="Bildnachweise">Bildnachweise</a> |
<a href="/sitemap" title="Sitemap">Sitemap</a>
</div><!-- end social-footer -->
</div><!-- end col -->
</div><!-- end row -->
</div><!-- end container -->
</div><!-- end copyrights -->
<!-- Ausgezeichnet.org-Dynamic-Seal: Begin -->
<div class="auorgDynamicSeal" auorg-data-type="rounded"></div>
<script src="https://siegel.ausgezeichnet.org/widgets/55b648290cf257aef3483d90/dynamic-seal.js?lang=de_DE" defer> </script> <!-- Ausgezeichnet.org-Dynamic-Seal: End -->

View file

@ -187,7 +187,7 @@
{# @var nav_page \AppBundle\Entity\Page #}
<li class="dropdown">
<a class="dropdown-toggle" href="{{ nav_page.urlPath }}">
<i class="fa fa-star"></i> {{ nav_page.title|replace({'Reisen': ''}) }} <span class="hidden-md">Reisen</span>
<i class="fa fa-star"></i> {{ nav_page.title|replace({'Reisen': ''}) }} <span class="hidden-md hidden-lg">Reisen</span>
</a>
<ul class="dropdown-menu">
@ -278,12 +278,6 @@
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/tuerkei-reisen" title="Türkei Reisen"><i class="fa fa-star"></i> Türkei Reisen </a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/usbekistan-reisen" title="Usbekistan Reisen"><i class="fa fa-star"></i> Usbekistan Reisen </a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/marokko-urlaub" title="Marokko Reisen"><i class="fa fa-star"></i> Marokko Reisen</a>
</li>
<li class="divider"></li>
<li role="menuitem" itemprop="name">
@ -305,6 +299,11 @@
<i class="fa fa-book"></i> Reisemagazin
</a>
</li>
<li role="menuitem" itemprop="name">
<a itemprop="url" href="/reisenews" title="Reisenews">
<i class="fa fa-newspaper-o"></i> Reisenews
</a>
</li>
</ul>
</li>
</ul>

View file

@ -1,5 +1,71 @@
{% form_theme search_form 'default/form/theme.html.twig' %}
<style>
.dev-start-slider {
background: #e8dfd2;
overflow: hidden;
}
.dev-start-slider .dev-start-slider-frame {
position: relative;
z-index: 2;
max-width: 1280px;
margin: 0 auto;
overflow: hidden;
background: #e8dfd2;
}
.dev-start-slider .carousel-inner > .item {
overflow: hidden;
}
.dev-start-slider .dev-start-slider-blur {
position: absolute;
top: -24px;
right: -24px;
bottom: -24px;
left: -24px;
z-index: 1;
background-color: #e8dfd2;
background-position: center;
background-size: cover;
filter: blur(18px);
opacity: 0.65;
transform: scale(1.04);
}
.dev-start-slider .carousel-indicators {
right: auto;
bottom: 26px;
left: 50%;
z-index: 4;
width: 100%;
max-width: 1280px;
margin-left: 0;
padding-left: 24px;
text-align: left;
transform: translateX(-50%);
}
.dev-start-slider .carousel-indicators li,
.dev-start-slider .carousel-indicators .active {
width: auto;
height: auto;
margin: 0 6px 0 0;
padding: 5px 10px;
border: 1px solid rgba(255, 255, 255, 0.85);
border-radius: 14px;
background: rgba(0, 0, 0, 0.35);
color: #fff;
text-indent: 0;
line-height: 1;
}
.dev-start-slider .carousel-indicators .active {
background: #d89a13;
border-color: #d89a13;
}
.dev-start-slider .fill {
background-color: #e8dfd2;
background-position: center;
background-size: cover;
}
</style>
<section class="section fullscreen background start-slider dev-start-slider">
<div class="absolute-section">
<div class="container-fluid">
@ -22,12 +88,48 @@
</div>
</div>
<div id="myCarousel" class="carousel slide">
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active">1/4</li>
<li data-target="#myCarousel" data-slide-to="1">2/4</li>
<li data-target="#myCarousel" data-slide-to="2">3/4</li>
<li data-target="#myCarousel" data-slide-to="3">4/4</li>
</ol>
<div class="carousel-inner">
<div class="item active">
<div class="fill lozad" style="background-image:url(images/placeholder-image.png)" data-background-image="{{ image('bundles/app/images/travel/slider_aegypten.jpg') }}"></div>
<noscript>
<div class="fill" style="background-image:url({{ image('bundles/app/images/travel/slider_aegypten.jpg').cropResize(1024).guess(70) }})"></div>
</noscript>
<div class="dev-start-slider-blur" style="background-image:url({{ asset('img/slider/a1.jpg') }})"></div>
<div class="dev-start-slider-frame">
<div class="fill" style="background-image:url({{ asset('img/slider/a1.jpg') }})"></div>
<noscript>
<div class="fill" style="background-image:url({{ asset('img/slider/a1.jpg') }})"></div>
</noscript>
</div>
</div>
<div class="item">
<div class="dev-start-slider-blur" style="background-image:url({{ asset('img/slider/m1.jpg') }})"></div>
<div class="dev-start-slider-frame">
<div class="fill" style="background-image:url({{ asset('img/slider/m1.jpg') }})"></div>
<noscript>
<div class="fill" style="background-image:url({{ asset('img/slider/m1.jpg') }})"></div>
</noscript>
</div>
</div>
<div class="item">
<div class="dev-start-slider-blur" style="background-image:url({{ asset('img/slider/s1.jpg') }})"></div>
<div class="dev-start-slider-frame">
<div class="fill" style="background-image:url({{ asset('img/slider/s1.jpg') }})"></div>
<noscript>
<div class="fill" style="background-image:url({{ asset('img/slider/s1.jpg') }})"></div>
</noscript>
</div>
</div>
<div class="item">
<div class="dev-start-slider-blur" style="background-image:url({{ asset('img/slider/u1.jpg') }})"></div>
<div class="dev-start-slider-frame">
<div class="fill" style="background-image:url({{ asset('img/slider/u1.jpg') }})"></div>
<noscript>
<div class="fill" style="background-image:url({{ asset('img/slider/u1.jpg') }})"></div>
</noscript>
</div>
</div>
</div>
</div>

View file

@ -1,32 +1,42 @@
<div class="owl-fullwidth owl-carousel owl-theme">
{% for page in pages %}
<div class="owl-item-full">
<div class="travel-wrapper get-box-link">
<div class="item text-center">
<div class="item-img">
{% include 'default/components/pageBoxImage.html.twig' %}
</div>
<div class="box_mid">
<div class="hl5">{{ page.title }}</div>
{% if (page.boxBody ?? page.description) is not empty %}
<p>{{ page.boxBody|default(page.description) }}</p>
{% endif %}
{% if page.travelProgram is not empty and page.travelProgram.lowestPrice > 0 %}
<div class="price">
Für {{ page.travelProgram.lowestPrice|number_format }},- € p.P.
</div>
{% endif %}
</div>
<a class="item-button is-box-link dobble_line" href="{{ page.urlPath }}"><span>ansehen</span></a>
</div>
</div><!-- end travel-wrapper -->
</div>
{% endfor %}
<div class="owl-fullwidth owl-carousel owl-theme">
{% for page in pages %}
<div class="owl-item-full">
<div class="travel-wrapper get-box-link">
<div class="item text-center">
<div class="item-img">
{% include 'default/components/pageBoxImage.html.twig' %}
{% if show_item_counter is defined and show_item_counter %}
<span class="homepage-card-counter">{{ loop.index }}/{{ pages|length }}</span>
{% endif %}
{% if new_page_ids is defined and page.id in new_page_ids %}
<span class="homepage-card-new-badge">Neu</span>
{% endif %}
</div>
<div class="box_mid">
<div class="hl5">{{ page.title }}</div>
{% if page.homepageCountryName is not empty %}
<div class="text-muted small">{{ page.homepageCountryName }}</div>
{% endif %}
{% if (page.boxBody ?? page.description) is not empty %}
<p>{{ page.boxBody|default(page.description) }}</p>
{% endif %}
{% if page.travelProgram is not empty and page.travelProgram.lowestPrice > 0 %}
<div class="price">
Für {{ page.travelProgram.lowestPrice|number_format }},- € p.P.
</div>
{% endif %}
</div>
<a class="item-button is-box-link dobble_line" href="{{ page.urlPath }}"><span>ansehen</span></a>
</div>
</div><!-- end travel-wrapper -->
</div>
{% endfor %}
</div>

View file

@ -1,34 +1,39 @@
{# @var child_page \AppBundle\Entity\Page #}
<div class="col-md-4 col-sm-6">
<div class="travel-wrapper get-box-link">
<div class="item text-left">
<div class="item-img">
<div class="lb">
{% if child_page.boxStar is not empty %}
<div class="cstar_left">{{ child_page.boxStar|raw }}</div>
{% endif %}
{% if child_page.travelProgram is not empty and child_page.travelProgram.lowestPrice > 0 %}
<div class="cprice">ab {{ child_page.travelProgram.lowestPrice|number_format }} € p.P.</div>
{% endif %}
{% if child_page.boxDiscount is not empty %}
<div class="cdiscount">{{ child_page.boxDiscount|raw }}</div>
{% endif %}
{% if child_page.model == 'feedback'%}
<div class="cdiscount">{{ child_page.date|date }}</div>
{% endif %}
</div>
{% include 'default/components/pageBoxImage.html.twig' with {page: child_page} %}
</div>
<div class="box_mid">
<div class="hl5">{{ child_page.title }}</div>
<p>{{ child_page.boxBody ?? child_page.description }}</p>
</div>
<a class="item-button is-box-link dobble_line" href="{{ child_page.urlPath }}" title="{{ child_page.title }}">
<span>{{ child_page.title }}</span>
</a>
</div>
</div>
</div>
{# @var child_page \AppBundle\Entity\Page #}
<div class="col-md-4 col-sm-6">
<div class="travel-wrapper get-box-link">
<div class="item text-left">
<div class="item-img">
<div class="lb">
{% if child_page.boxStar is not empty %}
<div class="cstar_left">{{ child_page.boxStar|raw }}</div>
{% endif %}
{% if child_page.travelProgram is not empty and child_page.travelProgram.lowestPrice > 0 %}
<div class="cprice">ab {{ child_page.travelProgram.lowestPrice|number_format }} € p.P.</div>
{% endif %}
{% if child_page.boxDiscount is not empty %}
<div class="cdiscount">{{ child_page.boxDiscount|raw }}</div>
{% endif %}
{% if child_page.model == 'feedback'%}
<div class="cdiscount">{{ child_page.date|date }}</div>
{% endif %}
</div>
{% include 'default/components/pageBoxImage.html.twig' with {page: child_page} %}
</div>
<div class="box_mid">
<div class="hl5">{{ child_page.title }}</div>
<p>{{ child_page.description }}</p>
</div>
<a class="item-button is-box-link dobble_line" href="{{ child_page.urlPath }}" title="{{ child_page.title }}">
<span>{{ child_page.title }}</span>
</a>
</div>
</div>
</div>

View file

@ -1,17 +1,27 @@
{% if page.boxImageUrl is not empty %}
{% set image_url = page.boxImageUrl %}
{% set image_alt = page.travelProgram.title|default(page.title) %}
{% elseif page.travelProgram is not empty and page.travelProgram.previewImage is not empty %}
{% set image_url = 'uploads/travel_program/' ~ page.travelProgram.previewImage.fileNameWithExtension %}
{% set image_alt = page.title %}
{% elseif page.fewoLodging is not empty and page.fewoLodging.images is not empty and page.fewoLodging.images[0] is not empty %}
{% set image_url = '_uploads/images/' ~ page.fewoLodging.images[0].file %}
{% set image_alt = page.title %}
{% else %}
{% set image_url = asset('/bundles/app/images/no-picture.png')%}
{% set image_alt = 'Kein Vorschaubild vorhanden' %}
{% endif %}
<div class="img-background lozad" data-background-image="{{ image(image_url|trim('/')).cropResize(360).guess(70) }}" style="background-image:url({{ asset('images/placeholder-image.png') }})"></div>
<noscript>
<img width="234" data-url="{{ image_url }}" height="180" src="{{ image(image_url|trim('/')).cropResize(360).guess(70) }}" class="img-responsiv img-responsiv-item" style="">
</noscript>
{% if page.boxBody is not empty and page.boxBodyImage is defined and page.boxBodyImage %}
{% set image_url = page.boxBodyImage['thumb_url'] %}
{% set image_alt = page.boxBodyImage['title'] %}
<div class="img-background lozad" data-background-image="{{ image_url }}" style="background-image:url({{ asset('images/placeholder-image.png') }});"></div>
{% else %}
{% if page.boxImageUrl is not empty %}
{% set image_url = page.boxImageUrl %}
{% set image_alt = page.travelProgram.title|default(page.title) %}
{% elseif page.travelProgram is not empty and page.travelProgram.previewImage is not empty %}
{% set image_url = 'uploads/travel_program/' ~ page.travelProgram.previewImage.fileNameWithExtension %}
{% set image_alt = page.title %}
{% elseif page.fewoLodging is not empty and page.fewoLodging.images is not empty and page.fewoLodging.images[0] is not empty %}
{% set image_url = '_uploads/images/' ~ page.fewoLodging.images[0].file %}
{% set image_alt = page.title %}
{% elseif page.boxBody is not empty and page.boxBodyImage is defined and page.boxBodyImage %}
{% set image_url = page.boxBodyImage['thumb_url'] %}
{% set image_alt = page.boxBodyImage['title'] %}
{% else %}
{% set image_url = asset('/bundles/app/images/no-picture.png')%}
{% set image_alt = 'Kein Vorschaubild vorhanden' %}
{% endif %}
<div class="img-background lozad" data-background-image="{{ image(image_url|trim('/')).cropResize(360).guess(70) }}" style="background-image:url({{ asset('images/placeholder-image.png') }})"></div>
<noscript>
<img width="234" data-url="{{ image_url }}" height="180" src="{{ image(image_url|trim('/')).cropResize(360).guess(70) }}" class="img-responsiv img-responsiv-item" style="">
</noscript>
{% endif %}

View file

@ -0,0 +1,64 @@
{% if dev_home_sidebar_offer_pages is defined and dev_home_sidebar_offer_pages is not empty %}
{% include 'default/components/sidebar/pageSliderSidebarWidget.html.twig' with {
slider_title: dev_home_sidebar_offer_title|default('Aktuell planbare Reisen'),
target_widget: 'dev-home-offers-widget',
pages: dev_home_sidebar_offer_pages,
new_badge_active: dev_home_sidebar_new_badge_active|default(false),
show_item_counter: true,
new_page_ids: dev_home_sidebar_new_page_ids|default([])
} %}
{% endif %}
{% if dev_home_sidebar_news_pages is defined and dev_home_sidebar_news_pages is not empty %}
{% include 'default/components/sidebar/pageSliderSidebarWidget.html.twig' with {
slider_title: dev_home_sidebar_news_title|default('Reisenews'),
target_widget: 'dev-home-news-widget',
pages: dev_home_sidebar_news_pages,
show_item_counter: true
} %}
{% endif %}
<style>
#dev-home-usedom-widget .box_mid {
padding: 24px 20px;
background: #f6f1e8;
border: 1px solid #eadfcf;
border-radius: 4px;
}
#dev-home-usedom-widget .hl5 {
margin-bottom: 12px;
color: #d89a13;
}
#dev-home-usedom-widget p {
margin-bottom: 18px;
}
#dev-home-usedom-widget .dev-usedom-sidebar-button {
display: inline-block;
padding: 10px 24px;
border-radius: 3px;
background: #d89a13;
color: #fff;
font-weight: 600;
text-transform: uppercase;
}
#dev-home-usedom-widget .dev-usedom-sidebar-button:hover {
background: #b97f00;
color: #fff;
text-decoration: none;
}
</style>
<div class="widget clearfix hidden-xs">
<div class="widget-title">
<a class="collapse-widget collapsed" href="#dev-home-usedom-widget" data-toggle="collapse" aria-expanded="true">Ferienwohnungen Usedom</a>
</div>
<div class="boxwidget collapse" id="dev-home-usedom-widget" aria-expanded="true">
<div class="box_mid text-center">
<div class="hl5">Urlaub an der Ostsee</div>
<p>8 Ferienwohnungen in zwei Häusern auf Usedom - ideal als nahes, kurzfristig planbares zweites Standbein.</p>
<a class="dev-usedom-sidebar-button" href="/ferienwohnungen" title="Ferienwohnungen auf Usedom">
ansehen
</a>
</div>
</div>
</div>

View file

@ -0,0 +1,4 @@
{{ render(controller('AppBundle:Component:newsSidebarWidget', {
title: widget.name,
limit: widget.configNewsLimit
})) }}

View file

@ -1,43 +1,57 @@
{% if pages is not empty %}
<div class="widget clearfix hidden-xs">
<div class="widget-title">
<a class="collapse-widget collapsed" href="#{{ target_widget }}" data-toggle="collapse" aria-expanded="true">{{ slider_title }}</a>
</div><!-- end title -->
<div class="boxwidget collapse" id="{{ target_widget }}" aria-expanded="true">
<div class="box-slider">
{% for page in pages %}
<div class="travel-wrapper slide{{ loop.first ? ' active' }}">
<a href="{{ page.urlPath|default('javascript:void(0);') }}" class="item text-center">
<div class="item-img">
{% include 'default/components/pageBoxImage.html.twig' %}
</div>
<div class="box_mid">
<div class="hl5">{{ page.title }}</div>
<p>{{ page.boxBody ?? page.description }}</p>
{% if page.travelProgram is not empty and page.travelProgram.lowestPrice > 0 %}
<div class="price">
Für {{ page.travelProgram.lowestPrice|number_format }},- € p.P.
</div>
{% endif %}
</div>
</a>
</div><!-- end travel-wrapper -->
{% endfor %}
<div class="item-switch clearfix">
<a href="javascript:void(0);" class="item-button-prev">zurück</a>
<a href="javascript:void(0);" class="item-button-next">weiter</a>
</div>
</div>
</div>
</div><!-- end widget -->
{% if pages is not empty %}
<div class="widget clearfix hidden-xs">
<div class="widget-title">
<a class="collapse-widget collapsed" href="#{{ target_widget }}" data-toggle="collapse" aria-expanded="true">
{{ slider_title }}
{% if new_badge_active is defined and new_badge_active %}
<span class="label label-warning">Neu</span>
{% endif %}
</a>
</div><!-- end title -->
<div class="boxwidget collapse" id="{{ target_widget }}" aria-expanded="true">
<div class="box-slider">
{% for page in pages %}
<div class="travel-wrapper slide{{ loop.first ? ' active' }}">
<a href="{{ page.urlPath|default('javascript:void(0);') }}" class="item text-center">
<div class="item-img">
{% include 'default/components/pageBoxImage.html.twig' %}
{% if show_item_counter is defined and show_item_counter %}
<span class="homepage-card-counter">{{ loop.index }}/{{ pages|length }}</span>
{% endif %}
{% if new_page_ids is defined and page.id in new_page_ids %}
<span class="homepage-card-new-badge">Neu</span>
{% endif %}
</div>
<div class="box_mid">
{% if target_widget == 'news-widget' and page.date is not empty %}
<div class="text-muted text-center">Vom: {{ page.date|date('d.m.Y') }}</div>
{% endif %}
<div class="hl5">{{ page.title }} </div>
{% if page.homepageCountryName is not empty %}
<div class="text-muted small">{{ page.homepageCountryName }}</div>
{% endif %}
<p>{{ page.description }}</p>
{% if page.travelProgram is not empty and page.travelProgram.lowestPrice > 0 %}
<div class="price">
Für {{ page.travelProgram.lowestPrice|number_format }},- € p.P.
</div>
{% endif %}
</div>
</a>
</div><!-- end travel-wrapper -->
{% endfor %}
<div class="item-switch clearfix">
<a href="javascript:void(0);" class="item-button-prev">zurück</a>
<a href="javascript:void(0);" class="item-button-next">weiter</a>
</div>
</div>
</div>
</div><!-- end widget -->
{% endif %}

View file

@ -1,17 +1,17 @@
{# @var page \AppBundle\Entity\Page #}
<div class="row">
<div class="col-sm-6 col-md-12">
{% for widget in widgets %}
{% if widget.component is defined %}
{% include 'default/components/sidebar/' ~ widget.component ~ '.html.twig' %}
{% if(loop.index == loop_half ) %}
</div>
<div class="col-sm-6 col-md-12">
{% endif %}
{% endif %}
{% endfor %}
</div>
<div class="col-sm-12">
<hr class="visible-sm visible-xs">
</div>
</div>
{# @var page \AppBundle\Entity\Page #}
<div class="row">
<div class="col-sm-6 col-md-12">
{% for widget in widgets %}
{% if widget.component is defined %}
{% include 'default/components/sidebar/' ~ widget.component ~ '.html.twig' %}
{% if(loop.index == (loop_half|default((widgets|length / 2)|round(0, 'ceil'))) ) %}
</div>
<div class="col-sm-6 col-md-12">
{% endif %}
{% endif %}
{% endfor %}
</div>
<div class="col-sm-12">
<hr class="visible-sm visible-xs">
</div>
</div>

View file

@ -16,6 +16,11 @@
{% block stylesheets %}
{{ parent() }}
<link rel="preload" as="image" href="{{ asset('img/slider/a1.jpg') }}">
<link rel="preload" as="image" href="{{ asset('img/slider/m1.jpg') }}">
<link rel="preload" as="image" href="{{ asset('img/slider/s1.jpg') }}">
<link rel="preload" as="image" href="{{ asset('img/slider/u1.jpg') }}">
<link rel="preload" as="image" href="{{ asset('img/usedom.jpg') }}">
<style>
.dev-home-note {
margin-bottom: 25px;
@ -36,6 +41,61 @@
.dev-usedom-teaser .btn {
margin-top: 5px;
}
.dev-usedom-teaser-image {
overflow: hidden;
border-radius: 4px;
}
.dev-usedom-teaser-image .img-background {
min-height: 190px;
background-size: cover;
background-position: center;
}
.dev-usedom-carousel-heading {
margin: 8px 0 20px;
padding: 0 15px 8px;
border-bottom: 1px solid #d89a13;
color: #5a5a5a;
}
.dev-destination-note {
margin: 10px 0 18px;
padding: 12px 16px;
border-left: 4px solid #d89a13;
background: #f8f3ea;
}
.dev-destination-note strong {
display: block;
margin-bottom: 4px;
}
.travel-wrapper .item .item-img {
position: relative;
}
.homepage-card-counter {
position: absolute;
right: 10px;
top: 10px;
z-index: 12;
padding: 3px 8px;
border-radius: 2px;
background: rgb(100, 136, 89, 0.88);
color: #fff;
font-size: 12px;
font-weight: 700;
line-height: 1.2;
}
.homepage-card-new-badge {
position: absolute;
left: 10px;
top: 10px;
z-index: 12;
padding: 3px 8px;
border-radius: 2px;
background: #ffc926;
color: #1a457c;
font-size: 12px;
font-weight: 700;
line-height: 1.2;
text-transform: uppercase;
}
</style>
{% endblock %}
@ -52,11 +112,22 @@
Diese Startseite ist nur unter dem Testlink sichtbar und nicht fuer Suchmaschinen freigegeben.
</div>
<h1>Unsere beliebtesten Kulturreisen</h1>
{% set homepage_offer_heading = homepage_offer_title|default('beliebtesten Kulturreisen') %}
{% if '%count%' in homepage_offer_heading %}
<h1>{{ homepage_offer_heading|replace({'%count%': homepage_offer_pages|length}) }}</h1>
{% elseif homepage_offer_heading|slice(0, 6) == 'Unsere' %}
<h1>{{ homepage_offer_heading }}</h1>
{% else %}
<h1>Unsere {{ homepage_offer_pages|length }} {{ homepage_offer_heading|replace({'Beliebte': 'beliebtesten', 'beliebte': 'beliebtesten'}) }}</h1>
{% endif %}
<section id="dev-home-offers">
{% if homepage_offer_pages is not empty %}
{% include 'default/components/multiPageBoxCarousel.html.twig' with {pages: homepage_offer_pages} %}
{% include 'default/components/multiPageBoxCarousel.html.twig' with {
pages: homepage_offer_pages,
show_item_counter: true,
new_page_ids: homepage_offer_new_page_ids|default([])
} %}
{% else %}
<p>Aktuell konnten keine kuratierten Reiseangebote geladen werden.</p>
{% endif %}
@ -64,28 +135,54 @@
<section class="clearfix dev-usedom-teaser" id="dev-home-usedom">
<div class="row">
<div class="col-md-8">
<div class="col-md-7">
<h2 class="h3 h3l">Lieber näher zuhause? Ferienwohnungen auf Usedom</h2>
<p class="lead">
Neben unseren Kulturreisen bieten wir acht Ferienwohnungen in zwei Häusern auf Usedom.
Neben unseren Kulturreisen bieten wir <strong>8 Ferienwohnungen</strong> in zwei Häusern auf Usedom.
Ideal für alle, die kurzfristig, individuell und nah an der Ostsee Urlaub machen möchten.
</p>
<a class="btn btn-primary" href="/ferienwohnungen" title="Ferienwohnungen auf Usedom ansehen">
Ferienwohnungen ansehen
</a>
<br><br>
</div>
<div class="col-md-4">
<p>
Der Block macht Usedom als zweites Standbein sichtbar, ohne die Kulturreisen zu verdrängen.
Bilder und Reihenfolge können nach Sichtung des vorhandenen Bildpools noch feinjustiert werden.
</p>
<div class="col-md-5">
<div class="dev-usedom-teaser-image">
<img class="img-responsive" src="{{ asset('img/usedom.jpg') }}" alt="Ferienwohnungen auf Usedom">
</div>
</div>
</div>
<div class="clearfix">
</div>
<h2 class="h4 h3l dev-usedom-carousel-heading">Unsere 8 Ferienwohnungen auf Usedom</h2>
{% if fewo_lodgings is not empty %}
<div class="row">
<div class="owl-fullwidth owl-carousel owl-theme">
{% for lodging in fewo_lodgings %}
{% include 'default/components/pageLodgingBox.html.twig' %}
<div class="owl-item-full">
<div class="travel-wrapper get-box-link">
<div class="item text-left">
<div class="item-img">
<div class="lb">
{% if lodging.page.boxStar is not empty %}
<div class="cstar_left">{{ lodging.page.boxStar|raw }}</div>
{% endif %}
{% if lodging.page.boxDiscount is not empty %}
<div class="cdiscount">{{ lodging.page.boxDiscount|raw }}</div>
{% endif %}
</div>
{% include 'default/components/pageBoxImage.html.twig' with {page: lodging.page} %}
</div>
<div class="box_mid">
<div class="hl5">{{ lodging.page.title }}</div>
<p>{{ lodging.page.boxBody ?? lodging.page.description }}</p>
</div>
<a class="item-button is-box-link dobble_line" href="{{ lodging.page.urlPath }}" title="{{ lodging.page.title }}">
<span>{{ lodging.page.title }}</span>
</a>
</div>
</div>
</div>
{% endfor %}
</div>
{% endif %}
@ -104,16 +201,100 @@
<h1>STERN TOURS - Ihr Kulturreise-Spezialist aus Berlin</h1>
<p class="ft">
Herzlich willkommen bei STERN TOURS, Ihrem Reiseveranstalter für ausgewählte Kulturreisen.
In der aktuellen Startseitenfassung stehen besonders die Reiseziele im Vordergrund, die
derzeit gut planbar und verkaufbar sind: Ägypten, Marokko, Usbekistan und Oman.
Seit 1998 beraten wir Reisende zu den historischen Schätzen des Orients, Nordafrikas und
Zentralasiens. In der aktuellen Startseitenfassung stehen besonders die Reiseziele im
Vordergrund, die derzeit gut planbar und verkaufbar sind: Ägypten, Marokko, Usbekistan
und Oman. Bei Destinationen mit angespannter Lage kommunizieren wir bewusst transparent
und beraten persönlich, statt Reisen unkritisch in den Vordergrund zu stellen.
</p>
<h2 class="h3 h3l">Kulturreisen mit Erfahrung und persönlicher Beratung</h2>
<hr>
<h2 class="h3 h3l">Ägypten - Land der Pyramiden und Pharaonen</h2>
<p class="ft">
Seit 1998 beraten wir Reisende zu Kulturreisen in den Orient und angrenzende Regionen.
Die neue Frontseite soll Orientierung geben, buchbare Reisen sichtbar machen und zugleich
verantwortungsvoll mit Destinationen umgehen, bei denen die Lage eine vorsichtigere
Kommunikation erfordert.
Ägypten bleibt eines der klassischen STERN TOURS Ziele: Pyramiden, Luxor, das Tal der Könige,
Kairo und der Nil verbinden große Geschichte mit gut planbaren Kulturreisen. Unsere Programme
führen zu den wichtigsten Stätten des alten Ägypten und lassen sich je nach Reiseverlauf mit
einer Nilkreuzfahrt oder erholsamen Tagen am Roten Meer verbinden.
Hier finden Sie unsere <a href="/aegypten-reisen/aegypten-rundreisen" title="Ägypten Rundreisen">Ägypten Rundreisen</a>.
</p>
<h2 class="h3 h3l">Marokko - Königsstädte, Wüste und lebendige Kultur</h2>
<p class="ft">
Marokko verbindet orientalische Atmosphäre mit einer guten Erreichbarkeit: Marrakesch, Fès,
Rabat und Meknès stehen für Königsstädte, Handwerk, Märkte und eindrucksvolle Architektur.
Ausflüge in den Atlas und in die Wüstenlandschaften machen Marokko zu einem vielseitigen Ziel
für Kulturreisende, die derzeit eine gut planbare Alternative im nordafrikanischen Raum suchen.
Hier finden Sie unsere <a href="/marokko-urlaub/marokko-rundreisen" title="Marokko Rundreisen">Marokko Rundreisen</a>.
</p>
<h2 class="h3 h3l">Usbekistan - entlang der Seidenstraße nach Samarkand</h2>
<p class="ft">
Usbekistan ist ein junges Reiseland mit einer sehr alten Kultur. Samarkand, Buchara und Chiwa
stehen für die Seidenstraße, prachtvolle Medresen, türkisfarbene Kuppeln und Oasenstädte, die
bis heute von Handel, Handwerk und Geschichte erzählen. Für kulturinteressierte Gäste ist
Usbekistan aktuell eines der spannendsten und zugleich gut vermittelbaren Ziele im Programm.
Hier finden Sie unsere <a href="/usbekistan-reisen/usbekistan-rundreisen" title="Usbekistan Rundreisen">Usbekistan Rundreisen</a>.
</p>
<h2 class="h3 h3l">Oman - Wüstenschlösser, Naturschauspiele und Badestrände</h2>
<p class="ft">
Der Oman bietet Wüsten, Gebirge, Oasen, Küsten und eine wohltuend ruhige Form orientalischer
Gastfreundschaft. Maskat, Nizwa, traditionelle Souks, Forts und Fahrten durch eindrucksvolle
Landschaften machen das Sultanat zu einem hochwertigen Kulturreiseziel. Wer eine planbare Reise
mit Natur, Geschichte und Erholung verbinden möchte, findet im Oman eine starke Alternative.
Hier finden Sie unsere <a href="/oman-reisen/oman-rundreisen" title="Oman Rundreisen">Oman Rundreisen</a>.
</p>
<h2 class="h3 h3l">Türkei - Kultur zwischen Europa und Asien</h2>
<p class="ft">
Die Türkei bietet mit Istanbul, Ephesus, Kappadokien und vielen antiken Stätten ein großes
kulturelles Spektrum. Auf der aktuellen Startseite bleibt sie bewusst im Hintergrund, da der
Fokus auf den derzeit wichtigsten STERN TOURS Zielen liegt.
Hier finden Sie unsere <a href="/tuerkei-reisen/tuerkei-rundreisen" title="Türkei Rundreisen">Türkei Rundreisen</a>.
</p>
<h2 class="h3 h3l">Jordanien - Petra, Wadi Rum und persönliche Beratung</h2>
<div class="dev-destination-note">
<strong>Aktuelle Einordnung:</strong>
Reisen nach Jordanien sind grundsätzlich weiterhin möglich. Aufgrund der angespannten Lage in
der Region empfehlen wir eine persönliche Beratung und eine sorgfältige Prüfung von Reisezeitraum
und Verfügbarkeit.
</div>
<p class="ft">
Jordanien bleibt kulturell eines der eindrucksvollsten Ziele der Region: die Felsenstadt Petra,
Wadi Rum, Amman, Jerash und das Tote Meer prägen viele Reiseverläufe. Auf der Startseite wird
Jordanien derzeit bewusst weniger prominent beworben; Interessierte beraten wir gern individuell.
Hier finden Sie unsere <a href="/jordanien-reisen/jordanien-rundreisen" title="Jordanien Rundreisen">Jordanien Rundreisen</a>.
</p>
<h2 class="h3 h3l">Israel - große Religionsgeschichte mit aktueller Lageprüfung</h2>
<div class="dev-destination-note">
<strong>Aktuelle Einordnung:</strong>
Die Lage in der Region ist angespannt. Wir empfehlen, geplante Reisen nach Israel sorgfältig zu
prüfen und sich vor einer Buchung persönlich beraten zu lassen.
</div>
<p class="ft">
Israel ist ein Land von herausragender religiöser und kultureller Bedeutung: Jerusalem, Galiläa,
das Tote Meer, Haifa und Akko stehen für Geschichte, Begegnung und Vielfalt. Aufgrund der
aktuellen Situation tritt Israel auf der Startseite nicht in den Vordergrund; Anfragen mit
längerem Vorlauf behandeln wir individuell und verantwortungsvoll.
Hier finden Sie unsere <a href="/israel-reisen/israel-rundreisen" title="Israel Rundreisen">Israel Rundreisen</a>.
</p>
<h2 class="h3 h3l">Iran - Kulturschätze Persiens, derzeit nicht im Vordergrund</h2>
<div class="dev-destination-note">
<strong>Aktuelle Einordnung:</strong>
Aufgrund der aktuellen Lage sind Iran-Reisen derzeit nicht als aktive Buchungsempfehlung auf der
Startseite platziert. Interessierte können sich vormerken lassen und werden informiert, sobald
Reisen wieder verantwortungsvoll planbar sind.
</div>
<p class="ft">
Der Iran blickt auf Jahrtausende Kulturgeschichte zurück: Isfahan, Schiras, Yazd und Persepolis
gehören zu den großen Namen persischer Geschichte. Diese Faszination bleibt bestehen, wird aber
aktuell bewusst nicht verkaufsstark beworben. Der Schwerpunkt liegt auf transparenter Information
und späterer Wiederaufnahme, sobald die Rahmenbedingungen es erlauben.
Hier finden Sie unsere <a href="/iran-reisen/iran-rundreisen" title="Iran Rundreisen">Iran Rundreisen</a>.
</p>
</div>
</section>
</div>