TypoScript Setup Reference

Configure prefix and suffix

plugin.tx_contentslug

Property Data type Default
urlFragmentPrefix Content Object (cObject) TEXT cObject with current UID
urlFragmentSuffix Content Object (cObject) TEXT cObject with current UID
replaceFragmentInPageLinks boolean 1

urlFragmentPrefix

Property

urlFragmentPrefix

Description

This cObject can be used to render a prefix for the human-readable URL fragment.

Prefix, suffix, and fragment are assembled in the custom variable fragmentIdentifier of lib.contentElement.

Note

The prefix is enabled by default with the corresponding TypoScript constant.

Default:

plugin.tx_contentslug.urlFragmentPrefix = TEXT
plugin.tx_contentslug.urlFragmentPrefix {
    field = uid
    stdWrap.noTrimWrap = |c|-|
    if.isTrue = {$plugin.tx_contentslug.settings.renderPrefix}
}

Result:

c<uid>-<human-readable-fragment>
c123-section-of-interest

urlFragmentSuffix

Property

urlFragmentSuffix

Description

This cObject can be used to render a suffix for the human-readable URL fragment.

Prefix, suffix, and fragment are assembled in the custom variable fragmentIdentifier of lib.contentElement.

Note

The suffix is disabled by default with the corresponding TypoScript constant.

Default:

plugin.tx_contentslug.urlFragmentSuffix = TEXT
plugin.tx_contentslug.urlFragmentSuffix {
    field = uid
    stdWrap.noTrimWrap = |-||
    if.isTrue = {$plugin.tx_contentslug.settings.renderSuffix}
}

Result (if activated):

<human-readable-fragment>-<uid>
section-of-interest-123

Assemble the fragmentIdentifier variable

This variable is available in all Fluid templates of EXT:fluid_styled_content and allows to configure the complete URL fragment at a central place.

Attention

This variable is also processed in the following classes:

  1. The custom DataProcessor FragmentIdentifierProcessor, which will process the URL fragments for the “Section Index” content elements.
  2. The replaceFragment hook, which allows to overwrite fragments for links set in the rich text editor or in TCA fields with renderType inputLink.
lib.contentElement {
    // Override default templates of fluid_styled_content:
    partialRootPaths.101 = EXT:content_slug/Resources/Private/Overrides/fluid_styled_content/Partials/
    templateRootPaths.101 = EXT:content_slug/Resources/Private/Overrides/fluid_styled_content/Templates/

    // Build a complete fragment identifier with possible prefix and suffix:
    variables {
        fragmentIdentifier = COA
        fragmentIdentifier {
            if.isTrue.field = tx_content_slug_fragment

            10 =< plugin.tx_contentslug.urlFragmentPrefix

            20 = TEXT
            20.field = tx_content_slug_fragment

            30 =< plugin.tx_contentslug.urlFragmentSuffix

            stdWrap.trim = 1
        }
    }
}

Use FragmentIdentifierProcessor for “Section Index” menus

The menu content elements of type “Section Index” are built with DataProcessors.

To get the configured fragmentIdentifier variable for each of the linked content elements in these menus, the custom FragmentIdentifierProcessor is needed.

// Process 'fragmentIdentifier' variable in section menus:
tt_content.menu_section.dataProcessing.10.dataProcessing.20.dataProcessing.5 = Sebkln\ContentSlug\DataProcessing\FragmentIdentifierProcessor
tt_content.menu_section_pages.dataProcessing.10.dataProcessing.20.dataProcessing.5 = Sebkln\ContentSlug\DataProcessing\FragmentIdentifierProcessor

Sanitize custom data with postUserFunc

In case you append or prepend some custom strings, you can use the fragment evaluation to sanitize the completed URL fragment again:

urlFragmentSuffix = TEXT
urlFragmentSuffix {
    field = subheader
    if.isTrue.field = subheader
    stdWrap.noTrimWrap = |-||
}

lib.contentElement.variables.fragmentIdentifier {
    stdWrap.postUserFunc = Sebkln\ContentSlug\Evaluation\FragmentEvaluation->sanitizeFragment
}