Files
typo3-13/config/sites/ep-reisen/config.yaml
T
frommeandClaude Opus 5.5 48e049671e feat: search bar on TYPO3 13, loaded into the static pages, searching by GET
The search bar in the page header is back (SearchbarController, lib.searchBar
and lib.searchBarCollapsed), in the Subpage, SubpageSidebarRight and Detail
layouts as on TYPO3 10; product pages get the collapsed bar and its toggle
button in the main navigation again.

- The bar takes no arguments, so it is the same on every page of a site and
  cacheable. Page types 1706/1707 (/searchbar, /searchbar-collapsed on the
  ep-reisen root, also under /en/) render it alone for the static pages,
  which replace their exported bar with it via htmx. The suffixes have no
  leading slash: on the root page the route path has none, so "/searchbar"
  would never match (as /form and /snowreport do not there either).
- The form sends dateFrom, dateTo, pax, destinationType, destinationUid and
  priceRange by GET to the search page instead of POSTing to processSearch:
  no signed fields and no redirect, and URLs of about 100 characters instead
  of about 870. SearchController reads them (SEARCHBAR_PARAMETERS, excluded
  from the cHash; the results are not cached) and drops anything but a real
  Y-m-d date, which made DateUtility::formatDateRange() throw.
  processSearch is removed.
- The date range label is empty without arguments, so the template no longer
  needs ep:dateRange.

Compared with TYPO3 10: the bar's markup matches apart from the form (open,
collapsed, /en/); seven searches by GET load the same filter settings and
hit counts as the TYPO3 10 POST.

The static pages get the island from the exporter in EP/website, see
.ddev/plans/static-export-searchbar-island.patch (local only).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 15:43:24 +02:00

301 lines
7.5 KiB
YAML

base: 'https://www.ep-reisen.de'
baseVariants:
-
base: 'https://ep-reisen-13.ddev.site'
condition: 'applicationContext == "Development"'
-
base: 'https://staging.ep-reisen.de'
condition: 'applicationContext == "Production/Staging"'
disableStaticFileCache: false
errorHandling:
-
errorCode: 404
errorHandler: Page
errorContentSource: 't3://page?uid=608'
languages:
-
title: Deutsch
enabled: true
languageId: 0
base: /
typo3Language: de
locale: de_DE.UTF-8
iso-639-1: de
navigationTitle: Deutsch
hreflang: de-DE
direction: ''
flag: de
-
title: Englisch
enabled: true
languageId: 1
base: /en/
typo3Language: default
locale: en_US.UTF-8
iso-639-1: en
navigationTitle: English
hreflang: en-US
direction: ''
fallbackType: strict
fallbacks: ''
flag: gb
rootPageId: 9
routeEnhancers:
NewsDetailPlugin:
type: Extbase
extension: News
plugin: Pi1
limitToPages:
- 1392
routes:
-
routePath: '/{news_title}'
_controller: 'News::detail'
_arguments:
news_title: news
defaultController: 'News::detail'
aspects:
news_title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
NewsTagPlugin:
type: Extbase
extension: News
plugin: Pi1
limitToPages:
- 1391
routes:
-
routePath: '/{news_tag}'
_controller: 'News::list'
_arguments:
news_tag: overwriteDemand/tags
defaultController: 'News::list'
aspects:
news_tag:
type: PersistedAliasMapper
tableName: tx_news_domain_model_tag
routeFieldName: slug
TeamPlugin:
type: Extbase
extension: EpProducts
plugin: teammembers
limitToPages:
- 1446
routes:
-
routePath: '/{teamer_name}'
_controller: 'Team::show'
_arguments:
teamer_name: member
defaultController: 'Team::show'
aspects:
teamer_name:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_teammember
routeFieldName: path_segment
ProductDetailPlugin:
type: Extbase
extension: EpProducts
plugin: product_detail
routes:
-
routePath: '/detail/{product}'
_controller: 'Product::detail'
_arguments:
product: product
-
routePath: '/detail/{product_uid}/{hotel_uid}'
_controller: 'Product::detail'
_arguments:
product_uid: product
hotel_uid: hotel
-
routePath: '/detail/{product}/{hotel}'
_controller: 'Product::detail'
_arguments:
product: product
hotel: hotel
-
routePath: '/detail/{date_from}/{date_to}'
_controller: 'Product::detail'
_arguments:
date_from: dateFrom
date_to: dateTo
defaultController: 'Product::detail'
aspects:
product:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_product
routeFieldName: path_segment
hotel:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_hotel
routeFieldName: path_segment
product_uid:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_product
routeFieldName: uid
hotel_uid:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_hotel
routeFieldName: uid
date_from:
type: PassthroughMapper
date_to:
type: PassthroughMapper
requirements:
product_uid: \d+
hotel_uid: \d+
date_from: '\d{4}\-\d{2}\-\d{2}'
date_to: '\d{4}\-\d{2}\-\d{2}'
BookingLinkPlugin:
type: Extbase
extension: EpProducts
plugin: product_detail
limitToPages:
- 1846
routes:
-
routePath: '/{product}'
_controller: 'Product::detail'
_arguments:
product: product
defaultController: 'Product::detail'
aspects:
product:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_product
routeFieldName: path_segment
StaticResultsPlugin:
type: Extbase
extension: EpProducts
plugin: staticresult
limitToPages:
- 1838
routes:
-
routePath: '/{filter_settings}'
_controller: 'Search::staticresult'
_arguments:
filter_settings: encodedFilterSettings
defaultController: 'Search::staticresult'
requirements:
filter_settings: '[A-Z\d%\-\|;]+'
aspects:
filter_settings:
type: PassthroughMapper
ContingentsIcalPlugin:
type: Extbase
extension: EpProducts
plugin: ical
limitToPages:
- 9
routes:
-
routePath: '/contingents/{hotel}'
_controller: 'Ical::contingents'
_arguments:
hotel: hotel
defaultController: 'Ical::contingents'
aspects:
hotel:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_hotel
routeFieldName: path_segment
ResellerPlugin:
type: Extbase
extension: EpProducts
plugin: reseller
limitToPages:
- 1483
routes:
-
routePath: '/{reseller_code}'
_controller: 'Reseller::list'
_arguments:
reseller_code: reseller
-
routePath: '/{reseller_code}/xml'
_controller: 'Reseller::xml'
_arguments:
reseller_code: reseller
-
routePath: '/{reseller_code}/csv/{export_type}'
_controller: 'Reseller::csv'
_arguments:
reseller_code: reseller
export_type: type
-
routePath: '/{reseller_code}/copypaste/{product_uid}'
_controller: 'Reseller::copypaste'
_arguments:
reseller_code: reseller
product_uid: product
aspects:
export_type:
type: StaticValueMapper
map:
google: google
facebook: facebook
reseller_code:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_reseller
routeFieldName: code
product_uid:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_product
routeFieldName: uid
TravelinfoPlugin:
type: Extbase
extension: EpProducts
plugin: travelinfo
limitToPages:
- 2736
routes:
-
routePath: '/{travel_info}'
_controller: 'Travelinfo::travelInfo'
_arguments:
travel_info: travelInfo
-
routePath: '/{travel_code}'
_controller: 'Travelinfo::travelCode'
_arguments:
travel_code: travelCode
defaultController: 'Travelinfo::travelInfo'
requirements:
travel_code: '[A-Z]+\d{6}$'
aspects:
travel_info:
type: PersistedAliasMapper
tableName: tx_epproducts_domain_model_travelinfo
routeFieldName: path_segment
travel_code:
type: PassthroughMapper
PageTypeSuffix:
type: PageType
default: /
index: ''
map:
/: 0
/json: 1701
/html: 1702
/form: 1704
/captcha: 3413
searchbar: 1706
searchbar-collapsed: 1707
/snowreport: 1705
.json: 1803
.ical: 1710
sitemap.xml: 1533906435
yoast-snippetpreview.json: 1480321830
/pxa: 7378121
routes:
-
route: robots.txt
type: staticText
content: "User-agent: *\r\nDisallow: /typo3/\r\nDisallow: /typo3_src/\r\nDisallow: /ajax/\r\nAllow: /typo3/sysext/frontend/Resources/Public/*\r\n"
websiteTitle: ''