[Frage] Frage zu Templatepfaden in Typoscript, um Fluidtemplates von Extensions zu überschreiben TYPO3-Version: 9.5.7

  • 0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    24. 06. 2019, 19:40

    Hallo zusammen,

    ich habe wohl noch nicht ganz verstanden, wie das mit den Pfaden in Typoscript funktioniert die man angibt, um Fluidtemplates zu überschreiben.

    Ich habe eine eigene Providerextension.
    In dieser habe ich eigene Inhaltselemente und ich überschreibe erfolgreich die Template-Pfade von tx_indexedsearch.

    Jetzt dachte ich natürlich, dass würde für tx_news genauso funktionieren.

    Ich hätte gerne alle Templates, Partials, etc. sauber in einer Ordnersystematik einsortiert:
    EXT:provider/Resources/Private/…
    und dann
    - Partials/Content
    - Partials/Search
    - Partials/Page
    - Partials/News
    - Templates/Content
    - Templates/Search
    - Templates/Page
    - Templates/News
    usw…

    Nach mehrstündigem rumprobieren in meiner eigenen Provider-Extension habe ich es nicht hinbekommen, dass tx_news sich diesem System beugt.

    Die nun funktionierende Variante fühlt sich unsauber an, denn für tx_indexedsearch funktioniert die obige Variante, für tx_news liegt aber alles in:
    EXT:provider/Resources/Private/Extension/News/…
    - Layouts/
    - Partials/
    - Templates/News/

    In Typoscript gebe ich für tx_indexedsearch die Pfade so an:

    plugin.tx_indexedsearch {
    view {
    templateRootPaths {
    20 = EXT:provider/Resources/Private/Templates/
    }
    partialRootPaths {
    20 = EXT:provider/Resources/Private/Partials/Search/
    }
    }
    }

    In tx_news sieht es jetzt (funktionierend) so aus:

    plugin.tx_news {
    view {
    templateRootPaths {
    1 = EXT:provider/Resources/Private/Extension/News/Templates/
    }
    partialRootPaths {
    1 = EXT:provider/Resources/Private/Extension/News/Partials/
    }
    layoutRootPaths {
    1 = EXT:provider/Resources/Private/Extension/News/Layouts/
    }
    }
    settings {
    displayDummyIfNoMedia = 0
    }
    }

    Ich habe verschiedene Nummern vor dem Pfad probiert und diverse Schreibweisen ausprobiert, die ich per Google und in der Doku gefunden habe. Funktioniert alles nicht.

    Ich will mich ungern damit zufrieden geben, dass es jetzt irgendwie hingewurschtelt funktioniert, sondern verstehen, warum das mit den Pfaden nicht einfach funktioniert, wie ich es gerne hätte.

    Werden hier Pfade für Zwecke reserviert und überschreiben die sich dann irgendwie? Muss ich auf die Reihenfolge achten, in der ich die Pfade in meiner TS-Datei überschreibe? Oder muss der Pfad aus irgendeinem Grund immer auf die gleiche Art beginnen, basierend auf der Extension, die ich überschreibe? Was passiert hier???

    Mir fiel schon beim Überschreiben der Templates von den contentElements auf, dass ich die Pfade nicht innerhalb meiner gewünschten Ordnerstruktur unterbringen kann, sondern das außerhalb davon erledigen muss. Die Pfade für die FSC sehen beispielsweise zwangsweise so aus: EXT:provider/Resources/Private/FSC/

    Vielleicht kann mir jemand hier erklären, was da schief läuft. Ich würde es wirklich gerne verstehen, dass das nicht jedesmal so ein Stochern im Nebel ist und vielleicht meine Extension etwas aufgeräumter ist.

    Vielen Dank schon mal!


  • 1
  • Teisinger Teisinger
    Jedi-Meister
    0 x
    331 Beiträge
    23 Hilfreiche Beiträge
    25. 06. 2019, 17:38

    a) Zum einen solltest du Pfade immer in Zehnerschritten angeben z.B.
    10 = pfad
    20 = noch ein pfad

    -------------------------------------------

    b) Zum anderen:
    Unter Templates/ müssen die HTML/FLUID Datein im jeweiligen Ordner der Class gesteckt werden...
    z. B.
    MyClassController -> MyMethodAction
    wird zu:
    Templates/MyClass/MyMethod.html

    Bei den Anderen (Partials und Layouts) bist du frei in der Gestaltung.

    -------------------------------------------

    c) Des weiteren:
    Bei den TypoScript Pfadangaben sucht TYPO3 zuerst im höchstnummerierten Pfad nach dem entsprechenden Template.
    z. B.

    10 = Pfad
    20 = Pfad
    40 = Pfad (hier sucht TYPO3 zuerst nach dem FLUID - findet es unter diesem Pfad nichts, geht es einen Pfad niedriger, in diesem Bsp. zu Pfad 20... usw.)

    -------------------------------------------

    Sprich du kannst schon alle FLUID-Templates von allen Extensions in einem Ordner Platzieren - musst halt nur obiges beachten, in deinem Fall wohl explizit b).
    Ob das immer Klug ist, ist die Frage - z. B. bin ich mir fast sicher das es mehrere Extensions gibt die z. B. eine Classe "BackendController" haben, deren Fluid Templates würdest du dann alle in einen Ordner "Templates/Backend/" schmeißen müssen... kannst das dort also nicht mehr Trennen.

    Ich mach das aktuell genau anders, genau so wie du das nicht willst:
    Private/Extensions/news/Templates - Partials - Layouts
    Private/Extensions/tt_address/Templates - Partials - Layouts
    etc.

    Wenn ich nun auf die HeaderTemplates von Fluid_styled_content in diesen Extensions zugreifen will, schreib ich den Pfad von fluid_styled_content einfach zu den Pfadangaben in TypoScript der jeweiligen Extensions.
    z. B.:
    TemplateRootPaths {
    10 = pfadZurFluidStyledContent
    20 = pfadZuDennOriginalFLuidTemplatesDerExtension
    30 = myCustomPfad
    }

    https://github.com/groundstack-org

  • 0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    26. 06. 2019, 05:02

    Guten Morgen,

    danke, das hilft schon sehr. Mir geht es ja nicht darum auf Teufel komm raus meine Systematik darauf zu münzen, sondern zu verstehen, warum meine nicht funktioniert.

    Ich denke, ich werde das in Zukunft dann so handhaben, wie Du.

  • 1