Zum Inhalt springen

8.7 verschiedende Layouts verwenden

Erstellt am 18. März 2018 · 1 Antwort · letzte Antwort am 19. März 2018

Tags: Fluid, TYPO3 8, Frage

techie ·

Hallo,
ich versuche gerade eine Seite aufzubauen. Dafür habe ich ein Layout für Homepage und Unterseite, das in 2 sections aufgeteilt ist.
Also eine Layoutdatei und eine Templatedatei mit 2 sections. Die sections werte ich anhand einer Variablen namanes backendlayout aus. Das klappt wunderbar.
Für die Newsletter habe ich eine eigene Layoutdatei, die ich gerne automatisiert über die Auswahl des Backendlayouts integrieren möchte. Hoffe das war verständlich. Anbei mein Typoscript dazu (in eine Template-Extension)

page = PAGE

page.10 = FLUIDTEMPLATE
page.10 {
    partialRootPath = EXT:meine/Resources/Private/Partials/
    layoutRootPath = EXT:meine/Resources/Private/Layouts/

    file = EXT:meine/Resources/Private/Templates/Webseite.html

    ## Inhalte an das Template übergeben
    variables {

        main = CONTENT
        main {
            table = tt_content
            select.where = colPos = 0
            select.orderBy = sorting
        }

        slider < .main
        slider.select.where = colPos = 1

        ziele < .main
        ziele.select.where = colPos = 2

        themen < .main
        themen.select.where = colPos = 3

        agenda < .main
        agenda.select.where = colPos = 4


        backendlayout = CASE
        backendlayout {
            key.data = pagelayout

            pagets__Homepage = TEXT
            pagets__Homepage.value = Homepage

            pagets__Unterseite = TEXT
            pagets__Unterseite.value = Unterseite

            pagets__Newsletter = TEXT
            pagets__Newsletter.value = Newsletter


            default < .pagets__Unterseite
        }

    }
}

page {
    meta {
        X-UA-Compatible = IE=edge,chrome=1
        X-UA-Compatible.httpEquivalent = 1
        viewport = width=device-width, initial-scale=1
        description.field = description
        description.ifEmpty = Meine Description
        author.field = author
        keywords.field = keywords
    }

    # CSS
    includeCSS {
        file10 = EXT:meine/Resources/Public/Css/foundation.css
    }

    includeJSFooter {
        file10 = EXT:meine/Resources/Public/JavaScript/vendor/jquery.js
    }
}

page.shortcutIcon = EXT:meine/Resources/Public/Icons/favicon.ico

Nun soll für "pagets__Newsletter" eine andere Layoutdatei verwendet werden.
Im Template Webseite.html wird die Layoutdatei "Standard.html" benutzt.

Teisinger ·

Hallo,

also du kannst dir die Arbeit noch etwas erleichtern wenn du dein TS ein wenig umbaust:

10 = FLUIDTEMPLATE
   10 {
        format = html
        layoutRootPaths {
            10 = {$theme.urls.themeResources}Private/Html/Layouts/
        }

        templateRootPaths {
            10 = {$theme.urls.themeResources}Private/Html/Templates/
        }

        partialRootPaths {
            10 = {$theme.urls.themeResources}Private/Html/Partials/
        }

        ### Backend-Layout uid for example:
        ### default_with_side_nav load automaticly the template file DefaultWithSideNav.html
        ### subnavigation_right_2_columns -> SubnavigationRight2Columns.html
        ### uid: 1 -> 1.html
        templateName = TEXT
        templateName {
            cObject = TEXT
            cObject {
                data = pagelayout
                required = 1
                case = uppercamelcase
                split {
                    token = pagets__
                    cObjNum = 1
                    1.current = 1
                }
            }
            ifEmpty = OneColumn
        }

Zu deinem Problem:
in deinen Template-Dateien lädst du normalerweise per Viewhelper eine Layoutdatei, diese musst du dann halt anpassen:

<f:layout name="DefaultLayout" />