Damit eine URL schön aufrufbar ist, z.B. /produkte/mein-super-item statt ein langer URL String mit cHash, kann man einen RouteEnhancer einsetzen. Dieser kann auf Basis von DB Felder erzeugt werden.

Slug Feld erstellen

Zuerst legen wir im TCA ein neues Feld namens "Slug" an. Dafür muss natürlich noch die ext_tables.sql und das Model mit Getter und Setter ausgestattet werden.

Das Feld Slug bekommt jetzt folgende Konfiguration:

 

<?php




'columns' => [
    ...
        'slug' => [
            'exclude' => false,
            'label' => 'Slug',
            'config' => [
                'type' => 'slug',
                'size' => 50,
                'eval' => 'uniqueInSite',
                'generatorOptions' => [
                    'fields' => ['title'],
                    'replacements' => [
                        '/' => '-',
                        ' ' => '-'
                    ],
                ],
                'fallbackCharacter' => '-',
            ],
        ],
    ...
]

 

Dieses Feld generiert jetzt einen einmaligen Text aus dem Feld "title" und ändert ggf. Sonderzeichen und andere Symbole und Leerzeichen z.B. in "-" um.

Routeenhancer erstellen

Unter config/sites/<SEITE>/config.yaml können wir nun unter "RouteEnhancers" den unten stehenden Code einfügen:

 

ProductDetail:
    type: Extbase
    limitToPages: [<PID hier eintragen!>]
    extension: Produkt
    plugin: Detail
    defaultController: 'Product::detail'
    routes:
      - routePath: '/{slug}'
        _controller: 'Product::detail'
        _arguments:
          slug: product
    aspects:
      slug:
        type: PersistedAliasMapper
        tableName: 'tx_produkt_domain_model_product'
        routeFieldName: 'slug'

 

Jetzt noch den System-Cache einmal leeren und natürlich in den Datensätzen die Slug-Felder generieren. Und beim nächsten Neuladen kann man die schönen URLs sehen.

Previous PostTYPO3 Powermail: Update für Sicherheitslücken verfügbar