feat: snow reports on TYPO3 13, with a page type for the static pages

The snow report list ("Schneehöhen" plugin) is ported from TYPO3 10:
SnowreportController, SnowreportRepository::getSnowreportsForRegions(),
the plugin registration with its flexform (regions) and the template,
which now formats dates with d.m.Y.

Page type 1705 (/<page>/snowreport) renders only the snow report plugins
of a page, like /form for forms. The static pages of the hybrid setup can
load it to replace the snow reports frozen at export time; each list
carries id="snowreport-<content uid>" for hx-select, since TYPO3 10 gives
the plugin no element of its own. ep:import-snowreport already flushes
the page cache after each import. The suffix is in the PageType enhancer
of every site with snow reports.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

feat: the snow report box includes the spacing of its content element

id="snowreport-<content uid>" moves from the list to a wrapper around
ep:container. The static pages of the hybrid setup no longer export the
snow reports at all, only an empty placeholder that loads the whole box,
spacing included, from /<page>/snowreport, so a page never shows
outdated snow depths.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
frommeandClaude Opus 5.5 committed 2026-10-22 14:19:53 +02:00
1 parent 62f3bee230
commit ca2fdc1e13
12 files changed
+211 -1

No files matched your search

@@ -0,0 +1,29 @@
# 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
}
}