Beispiel RouteEnhancer für lesbare Url's

Definition für eure Site Configuration

Schöne und lesbare Url's werden in TYPO3 mit Hilfe von sogenannten "Route Enhancern" konfiguriert. Eine Beschreibung dieser Funktionalität findet ihr hier: Advanced routing configuration.

Mehr Information zum Url Routing von TYPO3: Speaking Urls

Information zur Nutzung der Site Configuration in TYPO3: Sitehandling

Damit werden auch die schönen/lesbaren Url's für die Einzelansichten der Einsätze, Fahrzeuge und Hilfsmittel gebaut. Diese Konfiguration muss dazu in eurer "Site Configuration" eingefügt werden.

Nachfolgend findet ihr ein Beispiel für eine solche Konfiguration, wie ich sie in meiner Testumgebung einsetze. Damit bekommt ihr lesbare Url's für die Einzelansichten, sowie die Seiten/Blätternavigation bei längeren Listen.

routeEnhancers:
  OperationsPlugin:
    # set `limitToPages:` for route enhancer directly in your site config
    type: Extbase
    extension: Operations
    plugin: List
    routes:
      -
        routePath: '/{localized_page}-{page}'
        _controller: 'Operation::list'
        _arguments:
          page: currentPage
      -
        routePath: '/{operation_title}'
        _controller: 'Operation::show'
        _arguments:
          operation_title: operation
      -
        routePath: '/{vehicle_title}'
        _controller: 'Vehicle::show'
        _arguments:
          vehicle_title: vehicle
      -
        routePath: '/{resource_title}'
        _controller: 'Resource::show'
        _arguments:
          resource_title: resource

    defaultController: 'Operation::list'
    defaults:
      page: '1'
    requirements:
      page: \d+
    aspects:
      page:
        type: StaticRangeMapper
        start: '1'
        end: '200'
      operation_title:
        type: PersistedAliasMapper
        tableName: tx_operations_domain_model_operation
        routeFieldName: path_segment
      vehicle_title:
        type: PersistedAliasMapper
        tableName: tx_operations_domain_model_vehicle
        routeFieldName: path_segment
      resource_title:
        type: PersistedAliasMapper
        tableName: tx_operations_domain_model_resource
        routeFieldName: path_segment
      localized_page:
        type: LocaleModifier
        default: 'page'
        localeMap:
          - locale: 'de_DE.*'
            value: 'seite'

Dieses Beispiel findet ihr auch in der TYPO3 Extension fire_department im Ordner: Configuration/Yaml/Routes/Operations.yaml. Das könnt ihr dann einfach mit einem @import in eure "Site Configuration" einbauen und dann noch die Einstellung für limitToPages setzen.

imports:
  - { resource: "EXT:fire_department/Configuration/Yaml/Routes/Operations.yaml" }
routeEnhancers:
  OperationsPlugin:
    limitToPages: [5,7,9]

Tip

Ihr könnt die Datei auch in euer eigenes "Site Package" kopieren und diese dann importieren wenn das Beispiel nicht ausreicht oder ihr etwas ändern wollt.