Patrick Fiedorowicz | 23.07.2015 | TYPO3, Extensions
Template Fallbacks TYPO3 Fluid

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.

  1. Bernd Bernd 12.05.2016
    Eine der besten Ideen seit Jahren!

Neuen Kommentar schreiben

Zurück zu allen News