Extension über TypoScript einbinden

In dem letzten Teil deiner Integratorausbildung zeige ich dir, wie du Extbase Extension als Element mit TypoScript erstellen und einbinden kannst.

Du hast gelernt, wie man Inhaltselemente in TypoScript referenzieren und dem TYPO3 Entwickler zur Verfügung stellen kannst. In diesem Schritt zeige ich dir, wie du eine Extbase Extension per TypoScript in einen Pfad anlegen und bereitstellen kannst. Es wäre auch möglich, die Extension als Frontend Plugin umzusetzen und dann das Plugin in einem TYPO3 Ordner abzulegen und wie gewohnt als normales tt_content - Inhaltselement einbinden.

Aber was ist, wenn das nicht geht?

Du kannst eine Extension direkt ansteuern, dass heisst Controller und Actionfunktion ansprechen und in ein einem TypoScriptpfad referenzieren. Wir nutzen dafür das universelle TypoScript - Objekt: USER.

lib.extensions.exampleExtension = USER
lib.extensions.exampleExtension {
  userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
  extensionName = Example
  pluginName = Pi1
  vendorName = Slavlee
  controller = ControllerOhneControllerAmEnde
  action = ActionAberOhneActionAmEnde
  view < plugin.tx_example.view
  persistence < plugin.tx_example.persistence
  settings < plugin.tx_example.settings
}

Das sind viele Zeilen. Lass uns erstmal klären, was die Eigenschaften im einzelnen bedeuten.

userFuncPHP - Funktion die für das Initialisieren einer Extbase Extension verantwortlich ist. Hier ist es die TYPO3 Standardfunktion
extensionNameName der Extension in der CamelCase - Schreibweise
pluginNameName des Plugins
vendorNameName des Vendors, also Autor der Extension
controllerName des Controllers des angesprochen werden soll
actionName der Action - Funktion die angesprochen werden soll
viewTypoScript Array um die Pfade aller Templateordner zu definieren
settingsTypoScript Array um Einstellungen der Extension zu setzen

Eine Extbase - Extension ist in TYPO3 so aufgebaut, dass es Controller und Action - Funktionen gibt. Diese 2 Komponenten sind zentrale Anlaufstelle einer Extension. Die Actionfunktionen lassen sich direkt ansteuern, entweder hier über TypoScript oder durch einen URL Aufruf. Wichtig ist, dass hier nicht die Zusätze: Controller oder Action mit angegeben werden.
Desweiteren ist eine Extension unterteilt in Plugins, wenn diese Extension eine Ausgabe in das Frontend machen möchte. Deshalb müssen wir hier den Namen des Plugins angeben. 

Für eine vollständige Initialisierung muss TYPO3 noch die Pfade der Templatedateien kennen. Hier gibt es zwar klare Konventionen, aber aufgrund von Flexibilität noch keine automatisierte Ermittlung. Deshalb übergibt man hier ein TypoSript Array: view und teilt Typo3 alle Startordner für Layout, Template und Partial mit.

...
  controller = ControllerOhneControllerAmEnde
  action = ActionAberOhneActionAmEnde
  view < plugin.tx_example.view
  persistence < plugin.tx_example.persistence
  settings < plugin.tx_example.settings
...

Die Eigenschaft: settings bietet die Möglichkeit Einstellungen via TypoScript an die Extension zu senden.

In TypoScript lassen sich auch Pfade kopieren. Das siehst du am obigen Beispiel mit den Zeichen: <. Hier kopieren wir den Inhalts eines Pfades in einen anderen. Wichtig: Falls man einen Pfad, via Extension oder aus dem Backend heraus, ändert. Dann ändern sich nicht automatisch die Kopien.

Wir kopieren und erstellen keine Referenz

Die Eigenschaft: persistence kann das Verhalten der Datenbankspeicherung beeinflussen. Diese Eigenschaft ist etwas für TYPO3 Entwickler.

Das ist die Art und Weise, wie du eine Extbase Extension mit TypoScript einbinden bzw. zur Verfügung stellen kannst. Du hast hier die Flexibilität direkt einen Controller und eine Action - Funktion anzusteuern. Falls du ein Plugin einbinden willst mit den Standardcontroller und Actionfunktion. Dann geht das in TypoScript wesentlich schneller über diese Anweisung:

lib.extensions.exampleExtension =< tt_content.list.20.example_pi1

Jedes Frontend Plugin ist in TYPO3 unter dem Pfad: tt_content.list.20 aufgelistet. Hier ist die Schreibweise: nameDerExtension.nameDesPlugins. Wir übertragen dann den gesamten Typoscriptpfad zu unseren gewünschten Zielpfad. Mit dem Zeichen =< erstellen wir keine Kopie, sondern eine Referenz. Dadurch werden alle Änderungen am Original, auch direkt in den Referenzen wirksam.

Damit ist deine Basisausbildung im TYPO3 Campus als TYPO3 Integrator erfolgreich beendet.

Herzlichen Glückwunsch

Du kannst mit dem Wissen die meisten gängigen Aufgaben lösen.