Globale Variablen wie Firmenname, Telefon oder E-Mail legst du in TYPO3 v14 als Site Settings an und ersetzt sie im RTE per Platzhalter.
Die Werte werden im Backend gepflegt, ganz ohne eigenen PHP-Code.
1. Variablen definieren (Site Set im Sitepackage)
EXT:my_sitepackage/Configuration/Sets/Globals/config.yaml
name: my-sitepackage/globals
label: 'Globale Variablen'EXT:my_sitepackage/Configuration/Sets/Globals/settings.definitions.yaml
categories:
globals:
label: 'Globale Variablen'
settings:
globals.company:
label: 'Firmenname'
category: globals
type: string
default: 'T3Solution'
globals.phone:
label: 'Telefon'
category: globals
type: string
default: '+49 571 000000'
globals.email:
label: 'E-Mail'
category: globals
type: string
default: 'info@example.org'Set in der Site-Konfiguration eintragen (config/sites/<site>/config.yaml):
dependencies:
- my-sitepackage/globalsDie Werte bearbeitest du unter Sites → Setup → Settings bearbeiten. Sie werden in config/sites/<site>/settings.yaml gespeichert und können je Site unterschiedlich sein.
2. Platzhalter im RTE ersetzen
Site Settings stehen automatisch als TypoScript-Konstanten zur Verfügung. Im Setup des Sets (Configuration/Sets/Globals/setup.typoscript):
lib.parseFunc_RTE.nonTypoTagStdWrap.replacement {
10.search = {{company}}
10.replace = {$globals.company}
20.search = {{phone}}
20.replace.cObject = TEXT
20.replace.cObject {
value = {$globals.phone}
typolink.parameter.cObject = TEXT
typolink.parameter.cObject {
value = {$globals.phone}
# strip spaces etc. for the tel: href
replacement.10 {
search = #[^0-9+]#
replace =
useRegExp = 1
}
wrap = tel:|
}
}
30.search = {{email}}
30.replace.cObject = TEXT
30.replace.cObject {
value = {$globals.email}
typolink.parameter = {$globals.email}
}
}
# also for fields rendered via lib.parseFunc
lib.parseFunc.nonTypoTagStdWrap.replacement < lib.parseFunc_RTE.nonTypoTagStdWrap.replacementRedakteure schreiben im CKEditor dann einfach: Rufen Sie T3Solution an: +49 175 8251430
3. In Fluid-Templates nutzen
lib.globals {
company = TEXT
company.value = {$globals.company}
phone = TEXT
phone.value = {$globals.phone}
}<f:cObject typoscriptObjectPath="lib.globals.company" />In PAGEVIEW-Templates direkt: {site.settings.globals.company}
Hinweise
- Nach Änderung der Werte den Frontend-Cache leeren – die ersetzten Texte werden gecacht.
replacementgreift nur auf Text außerhalb von Tags: Platzhalter inhref-Attributen werden nicht ersetzt, im Linktext schon.- Header-Felder laufen nicht über
parseFunc: entweder im Template mitf:format.htmlausgeben oder diereplacementzusätzlich auflib.contentElement.stdWraplegen.