Skip to main navigation Skip to main content Skip to page footer

Sprechende URLs

Allgemeines

Die URL-Hashes in den URLs in der Fahrzeugsuche, werden hauptsächlich für das Routing verwendet, welche dann den State der Single-Page Fahrzeugsuche festlegen. Dabei kennt die Fahrzeugsuche generell erstmal die States:

  • #list
  • #details
  • #bookmarks
  • #request
  • #research

Diese States werden mit den in den TypoScript-Konstanten konfigurierten URLs verknüpft, um URLs den eigenen Anforderungen anzupassen. Wir gehen davon aus, dass dein Fahrzeugsuche-Plugin auf der Seite https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/ platziert ist. Somit ist das Verhalten wie folgt:

  • Ist in der Konstante {$themes.configuration.extension.fahrzeugsuche.urls.list} der Wert https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/ definiert, dann verwendet die Fahrzeugsuche bspw. für Zurück-Buttons zur Liste die URL https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/#list.
  • Ist in der Konstante {$themes.configuration.extension.fahrzeugsuche.urls.details}} der Wert https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/fahrzeug-details/%1$s definiert, dann verwendet die Fahrzeugsuche die URL https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/fahrzeug-details/A123456#details-super-modernes-auto
  • etc.

Hinweis:

Bei einer Detail-URL wie https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/fahrzeug-details/A123456#details-super-modernes-auto oder https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/?tx_fahrzeugsuche_fahrzeugsuche[fahrzeug]=%1$s#details-super-modernes-auto wird erst serverseitig der Fahrzeug-Parameter ausgewertet. Ist dieser vorhanden und gültig, wird er via data-fahrzeugsuche-show-fahrzeug-on-initialization Attribut an die Fahrzeugsuche übergeben. Diese öffnet dann beim Laden direkt das angegebene Fahrzeug. Sollte kein gültiger Fahrzeug-Parameter vorhanden sein, so versucht die Fahrzeugsuche das zu ladene Fahrzeug via URL-Hash zu finden.

Für die Konstanten kann zwischen Production- und Development-Environment eine einfache TypoScript-Kondition verwendet werden:

#
# Fahrzeugsuche URLs
themes.configuration.extension.fahrzeugsuche.urls.request = https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/fahrzeug-anfrage/%1$s
themes.configuration.extension.fahrzeugsuche.urls.list = https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/
themes.configuration.extension.fahrzeugsuche.urls.research = https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/suchauftrag/
themes.configuration.extension.fahrzeugsuche.urls.sitemap = https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/fahrzeug-details/%1$s
themes.configuration.extension.fahrzeugsuche.urls.details = https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/fahrzeug-details/%1$s
themes.configuration.extension.fahrzeugsuche.urls.bookmarks = https://www.typo3-fahrzeugsuche.de/fahrzeugsuche/merkzettel/
#
# Local DDEV
[request.getHeaders()['host'][0] == 'fahrzeugsuche.ddev.site']
    themes.configuration.extension.fahrzeugsuche.urls.request = https://fahrzeugsuche.ddev.site/fahrzeugsuche/fahrzeug-anfrage/%1$s
    themes.configuration.extension.fahrzeugsuche.urls.list = https://fahrzeugsuche.ddev.site/fahrzeugsuche/
    themes.configuration.extension.fahrzeugsuche.urls.research = https://fahrzeugsuche.ddev.site/fahrzeugsuche/suchauftrag/
    themes.configuration.extension.fahrzeugsuche.urls.sitemap = https://fahrzeugsuche.ddev.site/fahrzeugsuche/fahrzeug-details/%1$s
    themes.configuration.extension.fahrzeugsuche.urls.details = https://fahrzeugsuche.ddev.site/fahrzeugsuche/fahrzeug-details/%1$s
    themes.configuration.extension.fahrzeugsuche.urls.bookmarks = https://fahrzeugsuche.ddev.site/fahrzeugsuche/merkzettel/
[global]

Des weiteren werden URLs auf klassische Weise via Routes bereitgestellt, was im nächsten Abschnitt behandelt wird.

Slug-Konfiguration (ab TYPO3 9.5)

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    map:
      fahrzeugsuche-sitemap.xml: 1519148087
      fahrzeugsuche.json: 1469968203
  FahrzeugsucheDetailsPlugin:
    type: Extbase
    extension: Fahrzeugsuche
    plugin: Fahrzeugsuche
    routes:
      -
        routePath: '/fahrzeug-details/{fahrzeug_id}'
        _controller: 'Fahrzeugsuche::search'
        _arguments:
          fahrzeug_id: fahrzeug
      -
        routePath: '/fahrzeug-pdf/{account_id}/{fahrzeug_id}'
        _controller: 'Fahrzeugsuche::createPdf'
        _arguments:
          account_id: account
          fahrzeug_id: fahrzeugId
      -
        routePath: '/fahrzeug-bookmarks-pdf/{bookmarks}'
        _controller: 'Fahrzeugsuche::createBookmarksPdf'
        _arguments:
          bookmarks: bookmarks
    defaultController: 'Fahrzeugsuche::search'
    requirements:
      account_id: '^[a-zA-Z0-9].*$'
      fahrzeug_id: '^[a-zA-Z0-9].*$'
      bookmarks: '^[a-zA-Z0-9].*$'

Realurl-Konfiguration (bis TYPO3 9.5)

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = array (
    '_DEFAULT' => array (
        'postVarSets' => array (
            '_DEFAULT' => array (
                // EXT:fahrzeugsuche start
                'fahrzeug-details' => array(
                    array(
                        'GETvar' => 'tx_fahrzeugsuche_fahrzeugsuche[fahrzeug]',
                    ),
                ),
                'fahrzeug-pdf' => array(
                    array(
                        'GETvar' => 'tx_fahrzeugsuche_fahrzeugsuche[controller]',
                        'valueMap' => array(),
                        'noMatch' => 'bypass',
                    ),
                    array(
                        'GETvar' => 'tx_fahrzeugsuche_fahrzeugsuche[action]',
                        'valueMap' => array(
                            'pdf' => 'createPdf',
                            'bookmarks-pdf' => 'createBookmarksPdf',
                        ),
                        'noMatch' => 'bypass',
                    ),
                    array(
                        'GETvar' => 'tx_fahrzeugsuche_fahrzeugsuche[account]',
                    ),
                    array(
                        'GETvar' => 'tx_fahrzeugsuche_fahrzeugsuche[fahrzeugId]',
                    ),
                ),
                // EXT:fahrzeugsuche end
            ),
        ),
    ),
);