type = 'slug'¶
The main purpose of this type is to define parts of a URL path to generate and resolve URLs.
With a URL like
https://www.typo3.org/ch/community/values/core-values/ a URL slug is typically a part like
Within TYPO3, a slug is always part of the URL "path" - it does not contain scheme, host, HTTP verb, etc.
A slug is usually added to a TCA-based database table, containing some rules for evaluation and definition.
In contrast to concepts within RealURL of "URL segments", a slug is a segment of a URL, but it is not limited to be separated by slashes. Therefore, a slug can contain slashes.
If a TCA table contains a field called "slug", it needs to be filled for every existing record. It can be shown and edited via regular Backend Forms, and is also evaluated during persistence via DataHandler.
The default behaviour of a slug is as follows:
- A slug only contains characters which are allowed within URLs. Spaces, commas and other special characters are converted to a fallback character.
- A slug is always lower-cased.
- A slug is unicode-aware.
It is possible to build a default value from the rootline (very helpful for pages, or categorized slugs), but also to just generate a "speaking" segment from e.g. a news title.
Sanitation and Validation configuration options apply when persisting a record via DataHandler.
In the backend forms a validation happens by an AJAX call, which immediately checks any input and receives a new proposal in case the slug is already used.
'slug' => [ 'label' => '<path-to-locallang-file>.slug', 'exclude' => 1, 'config' => [ 'type' => 'slug', 'generatorOptions' => [ 'fields' => ['title', 'nav_title'], 'fieldSeparator' => '/', 'prefixParentPageSlug' => true, 'replacements' => [ '/' => '', ], ], 'fallbackCharacter' => '-', 'eval' => 'uniqueInSite', ], ],
Properties renderType default¶
- string (list of keywords)
- Proc. / Display
Configuration of field evaluation.
- evaluate if a record is unique in a page tree (specific to a language).
- Requires the field to be unique for the current PID among other records on the same page.
No other eval setting is checked for. It is possible to set both eval options, however it is recommended not to do so.
- Proc. / Display
- Character that represents the separator of slug sections, that contain the fieldSeparator.
Holds information about the record fields to be used for slug generation:
- fields (array)
Insert several field names (of type string or array) that will be considered during slug construction.
For the time being, only the
titlefield of table pages is evaluated to construct the slug from.
- fieldSeparator (string)
- This value will divide the slug parts. If a section value contains this very value, it will be replaced by the value given in fallbackCharacter.
- prefixParentPageSlug (boolean)
- The slugs of parent pages will be prefixed to the slug for the page itself. Disable it for shorter URLs, but take the higher chance of collision into consideration.
- replacements (array)
It allows to replace strings of a slug part. Add one of more array items with the key being the string to replace and the value being the replacement string.
'config' => [ 'type' => 'slug', 'generatorOptions' => [ 'fields' => ['nav_title', 'title'], 'replacements' => [ '(f/m)' => '', '/' => '-' ], ], 'fallbackCharacter' => '-', 'prependSlash' => true, 'eval' => 'uniqueInPid' ]
This will change the provided slug 'Some Job in city1/city2 (f/m)' to 'some-job-in-city1-city2'.
- Proc. / Display
- Defines whether a slug field should contain a prepending slash, e.g. for nested categories with speaking segments