chore: retire the snow report and search bar islands

They only served the static pages of the hybrid setup, which are retired:
TYPO3 13 renders search bar and snow reports in the page itself. Removed
are the page types 1705 (/snowreport) and 1706/1707 (/searchbar,
/searchbar-collapsed), their PageType enhancer entries and the id wrapper
of the snow report list that the static pages selected.

Also gone: the remarks about static pages and docroots in
ReferrerMiddleware and .htaccess.

The form page type (/form, 1704) stays for now; forms move off it in a
separate step.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
frommeandClaude Opus 5.5 committed 2026-10-26 09:31:55 +01:00
1 parent f0b23b37b9
commit 114a45aed3
10 files changed
+46 -116

No files matched your search

-3
View File
@@ -284,9 +284,6 @@ routeEnhancers:
/html: 1702
/form: 1704
/captcha: 3413
searchbar: 1706
searchbar-collapsed: 1707
/snowreport: 1705
.json: 1803
.ical: 1710
sitemap.xml: 1533906435
-1
View File
@@ -87,7 +87,6 @@ routeEnhancers:
map:
/form: 1704
/captcha: 3413
/snowreport: 1705
routes:
-
route: robots.txt
-1
View File
@@ -68,7 +68,6 @@ routeEnhancers:
/html: 1702
/form: 1704
/captcha: 3413
/snowreport: 1705
sitemap.xml: 1533906435
yoast-snippetpreview.json: 1480321830
routes:
-1
View File
@@ -52,7 +52,6 @@ routeEnhancers:
/html: 1702
/form: 1704
/captcha: 3413
/snowreport: 1705
sitemap.xml: 1533906435
yoast-snippetpreview.json: 1480321830
routes:
-1
View File
@@ -52,7 +52,6 @@ routeEnhancers:
/html: 1702
/form: 1704
/captcha: 3413
/snowreport: 1705
sitemap.xml: 1533906435
yoast-snippetpreview.json: 1480321830
routes:
@@ -13,8 +13,7 @@ use TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication;
/**
* Links to a form page carry the uid of the page they come from (?ref=123, e.g. the enquiry
* button of a product page). Its URL is kept in the session until AddReferrerFinisher puts it
* into the submission. On static pages the parameter reaches TYPO3 with the request that loads
* the form (see the form placeholder of the static export).
* into the submission.
*/
class ReferrerMiddleware implements MiddlewareInterface
{
@@ -1,25 +0,0 @@
# The search bar without the page around it, on the site root (/searchbar, /searchbar-collapsed).
# The static pages of the hybrid setup load it with htmx where the export had the bar: it is the
# same on every page of a site, and its options follow the imported products (ep:import-dates
# flushes the page cache). The form sends its fields by GET to the search page.
tx_eptheme_searchbar = PAGE
tx_eptheme_searchbar {
typeNum = 1706
config {
disableAllHeaderCode = 1
disablePrefixComment = 1
additionalHeaders.10.header = Content-Type: text/html; charset=utf-8
additionalHeaders.20.header = X-Robots-Tag: noindex, nofollow
admPanel = 0
debug = 0
}
10 =< lib.searchBar
}
tx_eptheme_searchbar_collapsed < tx_eptheme_searchbar
tx_eptheme_searchbar_collapsed {
typeNum = 1707
10 =< lib.searchBarCollapsed
}
@@ -1,29 +0,0 @@
# The snow reports of a page without the page around them (/path/snowreport). The static pages of
# the hybrid setup load this with htmx and replace the snow reports of the export with it: the
# page URL itself is a static file that never reaches TYPO3, and the snow reports are imported
# daily (ep:import-snowreport, which flushes the page cache). Each list carries
# id="snowreport-<content uid>" (Templates/Snowreport/List.html) for hx-select.
tx_eptheme_snowreport = PAGE
tx_eptheme_snowreport {
typeNum = 1705
config {
disableAllHeaderCode = 1
disablePrefixComment = 1
additionalHeaders.10.header = Content-Type: text/html; charset=utf-8
additionalHeaders.20.header = X-Robots-Tag: noindex, nofollow
admPanel = 0
debug = 0
}
10 = CONTENT
10 {
table = tt_content
select {
where = {#CType} = 'list' AND {#list_type} = 'epproducts_snowreport_list'
orderBy = sorting
}
# Only the plugin: header and frame stay on the static page
renderObj =< tt_content.list.20.epproducts_snowreport_list
}
}
@@ -7,55 +7,48 @@
<f:layout name="Default"/>
<f:section name="Main">
<f:comment>
The id lets the static pages of the hybrid setup pick this list, with the spacing of
ep:container, out of the snow report page type (/path/snowreport), which renders every
snow report plugin of a page.
</f:comment>
<div id="snowreport-{data.uid}">
<ep:container data="{data}">
<div class="flex flex-col space-y-2">
<f:for each="{list}" as="snowreport">
<div class="grid md:grid-cols-3 md:gap-y-0">
<div class="md:col-span-1 bg-ep-primary-dark p-2 flex items-start space-x-2">
{ep:icon(icon: 'flag-{snowreport.countryCode -> f:format.case(mode: \'lower\')}', class: 'w-8 h-6')}
<f:link.typolink parameter="{snowreport.regionDetailPage}"
title="{snowreport.regionName}"
class="text-white uppercase text-lg">
{snowreport.regionName}
</f:link.typolink>
</div>
<div class="md:col-span-2 bg-ep-primary-dark/20 p-2">
<f:if condition="{snowreport.inSeason}">
<f:then>
<ul class="flex flex-col space-y-1">
<li>
<strong>Berg/Tal:</strong> {snowreport.snow_level_mountain -> v:or(alternative: '-')}/{snowreport.snow_level_valley -> v:or(alternative: '-')} cm
</li>
<li>
<strong>Qualität:</strong> {snowreport.snow_quality}
</li>
<li>
<strong>Geöffnete Lifte:</strong> <f:if condition="{snowreport.lifts_opened} > 0"><f:then>{snowreport.lifts_opened}/{snowreport.lifts_total}</f:then><f:else>keine Angabe</f:else></f:if>
</li>
<li>
<strong>Letzter Schneefall:</strong> {f:if(condition: snowreport.last_snowfall, then: '{snowreport.last_snowfall -> f:format.date(format: \'d.m.Y\')}', else: 'keine Angabe')}
</li>
<li>
<strong>Letzte Akt.:</strong> {snowreport.last_update -> f:format.date(format: 'd.m.Y')}
</li>
</ul>
</f:then>
<f:else>
Saison vom {snowreport.seasonStart -> f:format.date(format: 'd.m.Y')} bis {snowreport.seasonEnd -> f:format.date(format: 'd.m.Y')}
</f:else>
</f:if>
</div>
<ep:container data="{data}">
<div class="flex flex-col space-y-2">
<f:for each="{list}" as="snowreport">
<div class="grid md:grid-cols-3 md:gap-y-0">
<div class="md:col-span-1 bg-ep-primary-dark p-2 flex items-start space-x-2">
{ep:icon(icon: 'flag-{snowreport.countryCode -> f:format.case(mode: \'lower\')}', class: 'w-8 h-6')}
<f:link.typolink parameter="{snowreport.regionDetailPage}"
title="{snowreport.regionName}"
class="text-white uppercase text-lg">
{snowreport.regionName}
</f:link.typolink>
</div>
</f:for>
</div>
</ep:container>
</div>
<div class="md:col-span-2 bg-ep-primary-dark/20 p-2">
<f:if condition="{snowreport.inSeason}">
<f:then>
<ul class="flex flex-col space-y-1">
<li>
<strong>Berg/Tal:</strong> {snowreport.snow_level_mountain -> v:or(alternative: '-')}/{snowreport.snow_level_valley -> v:or(alternative: '-')} cm
</li>
<li>
<strong>Qualität:</strong> {snowreport.snow_quality}
</li>
<li>
<strong>Geöffnete Lifte:</strong> <f:if condition="{snowreport.lifts_opened} > 0"><f:then>{snowreport.lifts_opened}/{snowreport.lifts_total}</f:then><f:else>keine Angabe</f:else></f:if>
</li>
<li>
<strong>Letzter Schneefall:</strong> {f:if(condition: snowreport.last_snowfall, then: '{snowreport.last_snowfall -> f:format.date(format: \'d.m.Y\')}', else: 'keine Angabe')}
</li>
<li>
<strong>Letzte Akt.:</strong> {snowreport.last_update -> f:format.date(format: 'd.m.Y')}
</li>
</ul>
</f:then>
<f:else>
Saison vom {snowreport.seasonStart -> f:format.date(format: 'd.m.Y')} bis {snowreport.seasonEnd -> f:format.date(format: 'd.m.Y')}
</f:else>
</f:if>
</div>
</div>
</f:for>
</div>
</ep:container>
</f:section>
</html>
+4 -5
View File
@@ -298,8 +298,8 @@ AddDefaultCharset utf-8
RewriteEngine On
# Legacy and campaign domains, consolidated onto their current host (from TYPO3 10's
# public/.htaccess, which the static docroots carry until the vhosts point here). These have to
# stay ahead of the Force SSL block and of TYPO3's catch-all at the end of this file.
# public/.htaccess). These have to stay ahead of the Force SSL block and of TYPO3's catch-all
# at the end of this file.
RewriteRule ^buchung/(.*)$ https://bpn.ep-reisen.de/$1 [R=302,L,QSA]
RewriteCond %{HTTP_HOST} ^cllt\-touristik\.at$ [NC]
@@ -370,11 +370,10 @@ AddDefaultCharset utf-8
# Rules to set ApplicationContext based on hostname
#RewriteCond %{HTTP_HOST} ^dev\.example\.com$
#RewriteRule .? - [E=TYPO3_CONTEXT:Development]
# Test vhost (base variant in config/sites/ep-reisen); the production vhosts point here site by
# site (phase F), until then the static docroots have their own .htaccess
# Test vhost (base variant in config/sites/ep-reisen)
RewriteCond %{HTTP_HOST} ^staging\.ep-reisen\.de$
RewriteRule .? - [E=TYPO3_CONTEXT:Production/Staging]
# The frontend lives on www.ep-reisen.de (static export + TYPO3 13); here it would be duplicate
# The frontend lives on www.ep-reisen.de; here it would be duplicate
# content, so only the backend and the files it loads stay on this host
# (original requests only: the index.php hand-over below runs through these rules again)
# Logged-in backend users (be_typo_user cookie of this host) see the TYPO3 13 frontend here, to check