feat: front page, event front page and popup page layouts on TYPO3 13

Restored from a46918d unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
frommeandClaude Opus 5.5 committed 2026-10-24 12:05:01 +02:00
1 parent 2999abc16c
commit 53faeccb70
9 files changed
+289

No files matched your search

@@ -0,0 +1,31 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:render partial="Topnav" arguments="{_all}"/>
<f:render partial="Mainnav" section="Main" arguments="{_all}"/>
<header>
<f:render partial="HeaderSlider" arguments="{_all}"/>
</header>
<main id="main-content">
<f:if condition="{data.tx_eptheme_hide_searchbar} || {settings.hideSearchbar}">
<f:else>
<f:cObject typoscriptObjectPath="lib.searchBar"/>
</f:else>
</f:if>
<f:render section="Content"/>
</main>
<footer>
<f:render partial="Footer" arguments="{_all}"/>
</footer>
<aside>
<f:render partial="ContactBar" arguments="{_all}"/>
<f:render partial="Mobilenav" section="Main" arguments="{_all}"/>
<f:if condition="{data.tx_eptheme_hide_searchbar} || {settings.hideSearchbar}">
<f:else>
<f:render partial="Search/MobileSearch" arguments="{_all}"/>
</f:else>
</f:if>
</aside>
<f:render partial="Config" arguments="{_all}" />
</html>
@@ -0,0 +1,22 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:render partial="Mainnav" section="Main" arguments="{_all}"/>
<header>
<f:render partial="EventHero" arguments="{_all}"/>
<f:render partial="EventDisturber" arguments="{headline: settings.eventDisturberHeadline, listItems: settings.eventDisturberListitems, buttonLabel: settings.eventDisturberButtonLabel, buttonLink: settings.eventDisturberButtonLink}"/>
</header>
<main id="main-content">
<f:render section="Content"/>
</main>
<footer>
<f:render partial="Footer" arguments="{_all}"/>
</footer>
<aside>
<f:render partial="ContactBar" arguments="{_all}"/>
<f:render partial="Topnav" arguments="{_all}"/>
<f:render partial="Mobilenav" section="Main" arguments="{_all}"/>
</aside>
<f:render partial="Config" arguments="{_all}" />
</html>
@@ -0,0 +1,7 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:render section="Content"/>
<f:render partial="Config" arguments="{_all}" />
</html>
@@ -0,0 +1,34 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers"
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers">
<div class="container lg:max-w-screen-2xl my-8">
<div class="bg-pattern">
<div class="pt-8 lg:py-8 {ep:themeClasses(classes: '{sbw: \'bg-sbw-primary/80\', snz: \'bg-snz-primary/80\', suz: \'bg-suz-primary/80\', uch: \'bg-uch-primary/80\'}', key: settings.themekey)}">
<div class="flex flex-col space-y-4 lg:space-y-0 lg:flex-row items-center">
<div class="w-full lg:w-1/3 font-black uppercase text-white text-4xl lg:text-3xl text-center">
{headline -> f:format.raw()}
</div>
<div class="w-full lg:w-1/3 lg:px-4 text-center">
<ul class="list-none inline-flex lg:flex flex-col space-y-1 lg:space-y-2">
<f:for each="{listItems -> v:iterator.explode(glue: ';')}" as="listItem">
<li class="flex items-center space-x-2 text-white">
{ep:icon(icon: 'check', class: 'w-6 h-6')}
<span>{listItem -> f:format.raw()}</span>
</li>
</f:for>
</ul>
</div>
<div class="w-full lg:w-1/3 lg:px-4">
<a class="button bg-button w-full"
href="{f:uri.typolink(parameter: buttonLink)}">
{buttonLabel -> f:format.raw()}
</a>
</div>
</div>
</div>
</div>
</div>
</html>
@@ -0,0 +1,75 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<div class="relative max-w-screen-2xl mx-auto">
<div class="absolute bottom-0 left-0 inset-x-0">
<div class="py-8 {ep:themeClasses(classes: '{sbw: \'bg-sbw-overlay/55\', snz: \'bg-snz-primary/50\', suz: \'bg-suz-primary/50\', uch: \'bg-uch-primary/50\'}', key: settings.themekey)}">
<div class="max-w-screen-md mx-auto px-4 md:px-0 flex">
<div class="hidden sm:flex flex-col justify-center {ep:themeClasses(classes: '{sbw: \'bg-sbw-primary\', snz: \'bg-snz-secondary\', suz: \'bg-suz-secondary\', uch: \'bg-uch-secondary\'}', key: settings.themekey)}">
<div class="text-white font-extrabold text-3xl lg:text-5xl flex-1 flex flex-col justify-around items-center text-center leading-none py-2 px-8 md:px-16">
<span>{settings.eventDateDayFrom -> f:format.raw()}</span>
<span>-</span>
<span>{settings.eventDateDayTo -> f:format.raw()}</span>
</div>
<div class="w-full px-4 bg-white text-center sbw:text-sbw-primary snz:text-snz-primary-dark suz:text-suz-primary-dark uch:text-uch-secondary p-2 whitespace-nowrap text-xl md:text-2xl uppercase font-bold leading-tight">
{settings.eventDateMonth -> f:format.raw()}
</div>
</div>
<div class="text-white uppercase text-3xl sm:text-5xl lg:text-7xl text-right sm:text-left font-extrabold px-4 md:px-8">
{settings.eventHeroClaim -> f:format.raw()}
</div>
<div class="text-white text-xl lg:text-2xl font-light border-l-4 md:border-l-8 border-white pl-4">
{settings.eventHeroDescription -> f:format.raw()}
</div>
</div>
</div>
<div class="sm:hidden text-white text-2xl uppercase text-center leading-none py-4 {ep:themeClasses(classes: '{sbw: \'bg-sbw-secondary\', snz: \'bg-snz-primary\', suz: \'bg-suz-primary\', uch: \'bg-uch-primary\'}', key: settings.themekey)}">
{settings.eventDateDayFrom -> f:format.raw()} - {settings.eventDateDayTo -> f:format.raw()} {settings.eventDateMonth -> f:format.raw()}
</div>
</div>
<f:alias map="{image: slide.image.0}">
<f:if condition="{image}">
<picture>
<source srcset="{f:uri.image(image: image, width: '1560')}" media="(min-width: 1280px)">
<source srcset="{f:uri.image(image: image, width: '1280')}" media="(min-width: 768px)">
<source srcset="{f:uri.image(image: image, height: '1024', cropVariant: 'mobile')}" media="(max-width: 767px)">
<f:image class="block w-full h-full object-cover"
image="{image}"
height="1024"
cropVariant="mobile"
alt="{image.alternative}"/>
</picture>
</f:if>
</f:alias>
<f:if condition="{badge}">
<f:alias map="{badgeData: badge.0.data}">
<f:link.typolink parameter="{badgeData.link}">
<div class="absolute top-0 right-0 mt-8 mr-4">
<svg viewBox="0 0 200 200"
class="w-40 h-40">
<circle id="bgouter" cx="100" cy="100" r="100" fill="currentColor" class="{ep:themeClasses(classes: '{sbw: \'text-sbw-primary/50\', snz: \'text-snz-primary/50\', suz: \'text-suz-primary/50\', uch: \'text-uch-primary/50\'}', key: settings.themekey)}"/>
<circle id="bginner" cx="100" cy="100" r="70" fill="currentColor" class="{ep:themeClasses(classes: '{sbw: \'text-sbw-primary\', snz: \'text-snz-primary\', suz: \'text-suz-primary\', uch: \'text-uch-primary\'}', key: settings.themekey)}"/>
</svg>
<div class="absolute top-1/2 left-1/2 -translate-xy-1/2 flex flex-col items-center justify-around">
<span class="text-white uppercase font-extrabold text-center leading-tight">{badgeData.title -> f:format.raw()}</span>
<span class="text-white uppercase text-center leading-tight">{badgeData.subtitle -> f:format.raw()}</span>
</div>
</div>
</f:link.typolink>
</f:alias>
</f:if>
<f:comment><!--
<f:if condition="{settings.eventAddon}">
<f:link.typolink parameter="{settings.eventAddon.link}" class="{settings.eventAddon.class}"
title="{settings.eventAddon.title}">
<f:image src="{settings.eventAddon.file}"
alt="{settings.eventAddon.title}"
title="{settings.eventAddon.title}"/>
</f:link.typolink>
</f:if>
--></f:comment>
</div>
</html>
@@ -0,0 +1,87 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<div class="splide mb-8"
data-controller="slider"
data-slider-preset-value="header">
<div class="splide__track">
<ul class="splide__list">
<f:for each="{slides}" as="slide" iteration="iteration">
<li class="splide__slide">
<div class="herounit">
<f:alias map="{image: slide.image.0}">
<f:if condition="{image}">
<div class="herounit__image">
<picture class="w-full h-full">
<source srcset="{f:uri.image(image: image, width: '1370')}" media="(min-width: 768px)">
<source srcset="{f:uri.image(image: image, height: '640', cropVariant: 'mobile')}" media="(max-width: 767px)">
<img src="{f:uri.image(image: image, cropVariant: 'mobile', height: '640')}" class="w-full h-auto" alt="{image.alternative}">
</picture>
</div>
</f:if>
</f:alias>
<div class="absolute left-0 bottom-0 inset-x-0 px-4 py-8 w-full md:bottom-1/2 md:translate-y-1/2">
<div class="lg:container px-0">
<div class="p-4 bg-ep-primary-dark/80 sbw:bg-sbw-primary/80 snz:bg-snz-primary/80 suz:bg-suz-primary/80 uch:bg-uch-primary/80 ser:bg-ser-primary/80 mb-4 md:p-8 md:max-w-2xl">
<span class="block text-2xl md:text-4xl lg:text-5xl max-w-sm md:max-w-none font-black text-white uppercase mb-4 md:mb-8">
{slide.headline}
</span>
<f:if condition="{slide.subline}">
<span class="hidden lg:block md:text-lg text-white mb-4 md:mb-8">
{slide.subline}
</span>
</f:if>
<f:if condition="{slide.button}">
<f:link.typolink parameter="{slide.page_uid}"
additionalAttributes="{'tabindex': '-1'}"
class="button bg-badge-gradient hover:bg-none hover:bg-ep-pink text-white inline-block">
{slide.button}
</f:link.typolink>
</f:if>
</div>
</div>
</div>
<f:if condition="{slide.skipass} || {badge}">
<div class="herounit__badge-wrapper">
<f:if condition="{slide.skipass}">
<f:link.typolink parameter="{settings.skipassPageUid}"
additionalAttributes="{'tabindex': '-1'}">
<div class="herounit__badge herounit__badge--skipass">
<div class="uppercase text-4xl font-bold leading-7 mb-2">Ski-<br>Pass</div>
<div class="uppercase">inklusive</div>
</div>
</f:link.typolink>
</f:if>
<f:if condition="{badge}">
<f:alias map="{badgeData: badge.0.data}">
<f:link.typolink parameter="{badgeData.link}"
additionalAttributes="{'tabindex': '-1'}">
<div class="herounit__badge herounit__badge--custom">
<svg viewBox="0 0 200 200"
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="xMinYMin meet"
class="w-full h-full">
<circle fill="currentColor" class="text-ep-primary-dark/50" cx="100" cy="100" r="100"/>
<circle fill="currentColor" class="text-ep-primary-dark" cx="100" cy="100" r="70"/>
</svg>
<div class="absolute top-0 left-0 inset-0 flex flex-col items-center justify-center p-8">
<span class="block text-center text-white bg-ep-primary-dark uppercase font-bold leading-none text-xl">{badgeData.title -> f:format.raw()}</span>
<f:if condition="{badgeData.subtitle}">
<span class="block text-center text-white bg-ep-primary-dark uppercase font-bold leading-none">{badgeData.subtitle -> f:format.raw()}</span>
</f:if>
</div>
</div>
</f:link.typolink>
</f:alias>
</f:if>
</div>
</f:if>
</div>
</li>
</f:for>
</ul>
</div>
</div>
</html>
@@ -0,0 +1,11 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:layout name="Page/Frontpage"/>
<f:section name="Content">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '0'}" />
</f:section>
</html>
@@ -0,0 +1,11 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:layout name="Page/FrontpageEvent"/>
<f:section name="Content">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '0'}" />
</f:section>
</html>
@@ -0,0 +1,11 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:layout name="Page/Popup"/>
<f:section name="Content">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '0'}" />
</f:section>
</html>