Patrick Fiedorowicz |  23.07.2015 | TYPO3, Extensions

In TYPO3s Templating-Engine Fluid wurde in der Version 6.2 ein neues Feature umgesetzt, welches ich begeistert aufgenommen habe: die Möglichkeit einzelne Template-Dateien von Extensions zu überschreiben. Ich möchte das am Beispiel der Extension "news" erläutern.

Die Standard-Templates von news beinhalten insgesamt 32 Dateien. Jeder Entwickler weiß, dass keine Änderungen direkt im Original-Code vorgenommen werden dürfen, um spätere Extension-Updates nicht zu behindern. Also werden alle 32 Template-Dateien an einen eigenen Ort kopiert und in TypoScript neu referenziert:

plugin.tx_news {
  view {
    templateRootPath = EXT:ext_key/Resources/Private/Extensions/News/Templates/
    partialRootPath = EXT:ext_key/Resources/Private/Extensions/News/Partials/
    layoutRootPath = EXT:ext_key/Resources/Private/Extensions/News/Layouts/
  }
}

Soweit bekannt, allerdings nicht sehr elegant, wenn nur wenige Dateien bearbeitet werden sollen. Oder falls ein Extension-Update grundlegende Änderungen an den Templates nach sich zieht, dann müssen wohl auch die kopierten Templates von Neuem überarbeitet werden. Das muss einfacher gehen!

"templateRootPaths" ist das Zauberwort

Hier kommt nun das neue Feature "templateRootPaths" ins Spiel. Dies ermöglicht einen Array mit Pfaden jeweils zu Templates, Partials und Layouts zu hinterlegen. Sollte dort eine bestimmte Template-Datei nicht gefunden werden, wird automatisch auf den Fallback gesprungen. Theoretisch sind hier auch mehrere Fallback-Pfade möglich, welche absteigend durchlaufen werden.

Der TypoScript-Code muss so verändert werden:

plugin.tx_news {
  view {
    templateRootPaths {
      0 = EXT:news/Resources/Private/Templates/ # Default aus news-TS
      10 = EXT:ext_key/Resources/Private/Extensions/News/Templates/
    }
    partialRootPaths {
      0 = EXT:news/Resources/Private/Partials/ # Default aus news-TS
      10 = EXT:ext_key/Resources/Private/Extensions/News/Partials/
    }
    layoutRootPaths {
      0 = EXT:news/Resources/Private/Layouts/ # Default aus news-TS
      10 = EXT:ext_key/Resources/Private/Extensions/News/Layouts/
    }
  }
}

News und Powermail sind einige der von mir getesteten Extensions, die bereits für templateRootPaths umgerüstet sind. Viele weitere Extensions werden mit Sicherheit folgen.

Ich kann nur DANKE für die Umsetzung an das TYPO3-Team sagen, das wird mir zukünftig einige Sorgen weniger bereiten.

zurück zu allen News

Kommentare

  1. BerndBernd 12.05.2016
    Eine der besten Ideen seit Jahren!

Neuer Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Bitte gib Sie an, um dein Gravatar-Bild anzuzeigen.