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/globals

Die 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.replacement

Redakteure 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.
  • replacement greift nur auf Text außerhalb von Tags: Platzhalter in href-Attributen werden nicht ersetzt, im Linktext schon.
  • Header-Felder laufen nicht über parseFunc: entweder im Template mit f:format.html ausgeben oder die replacement zusätzlich auf lib.contentElement.stdWrap legen.