Backendlayout einsetzen

Seit der TYPO3 Version 4.5 ist es möglich die zur Verfügung stehenden Spalten zur Befüllung mit Inhalten für den Redakteur anschaulicher anzuzeigen. Ohne großen Aufwand können diese jetzt individuell benannt werden und auch weitere Spalten hinzugefügt werden.

Backendlayouts erstellen

Der Ordnung wegen sollte man eine Seite für die Speicherung der Backendlayouts vorsehen. Wenn es sich um einen Auftritt handelt bei dem alle Redakteure auf den gesamten Seitenbaum Zugriff haben, kann dies die Startseite sein. Ansonsten wird ein Systemordner dafür erstellt.

In der Listenansicht kann man einen neuen Backend Datensatz anlegen.

  • Backenlayout erstellen

  • Gridlayout
Gridlayout in List View

Damit die Layouts auf allen Seiten in den Seiteneigenschaften angezeigt werden, muss im Page TSconfig die ID des Systemordners mit den Backendlayouts angegeben werden:

##id storagepage of gridlayout
TCEFORM.pages.backend_layout.PAGE_TSCONFIG_ID=29
TCEFORM.pages.backend_layout_next_level.PAGE_TSCONFIG_ID=29

Beim Einrichten der Redakteure muss man darauf achten, dass diese auch auf den Systemordner zugreifen dürfen!

Auf der Startseite definiert man in den Seiteneigenschaften dann das Standardlayout für alle Unterseiten. So muss der Redakteur nicht für jede neu erstellte Seite ein Layout auswählen, sondern nur für die vom Standard abweichende Seiten.

Will man, dass der Redakteur nicht die Möglichkeit hat kein Layout, also "Keins" auszuwählen, um mit der alten Backenansicht arbeiten zu können, so versteckt man diese Option folgendermaßen:
 

##hide no backend layout label
TCEFORM.pages.backend_layout_next_level.removeItems= -1
TCEFORM.pages.backend_layout.removeItems= -1

Es gibt auch ein leeres Auswahlfeld für das Standardlayout. Dies kann ebenfalls mit einem Label versehen werden. So kann ein Redakteur auch erkennen, welches Layout voreingestellt ist.
 

##give empty label a definition
TCEFORM.pages.backend_layout.altLabels.0 = Vordefiniertes Layout
  • Ansicht: Seiteneigenschaften
  • Ansicht: Backendlayout

Backendlayout mit Frontend verknüpfen

Zuerst wird abhängig vom gewählten Layout eine CSS Klasse für den body Tag definiert und page.bodyTagCObject zugewiesen:

##Backend grid view defines body class for css
temp.selectbodytag = CASE
temp.selectbodytag {
  key.field = backend_layout
  key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide
        default = TEXT
        default.value = layout1
        1 = TEXT
        1.value = layout1
        2 = TEXT
        2.value = layout2
        3 = TEXT
        3.value = layout3
   stdWrap.wrap = <body class ="|">
}

In dem Beispiel unten ist im HTML Template ein Subpart "contentWrap" definiert. Als COA kann es in mehrere Unterbereiche geliedert werden.

contentWrap.10 ist ein div welches in allen Backendlayouts vorkommt.
contentWrap.20 wird nur für die Layouts mit der ID 1 oder 2 ausgegeben.
contentWrap.20.20 wird nur für Layout mit der ID 2 ausgegeben.
contentWrap.20.30 wird nur für Layout mit der ID 3 ausgegeben.
contentWrap.30 kommt wieder in allen Backendlayouts vor.

Bei der if Abfrage wird der Wert zuerst in den darüber liegenden Seiten im Feld "Backend-Layout (für Unterseiten dieser Seite)" und auf den Value hin überprüft. Steht im Feld "Backend-Layout" ein Wert, so überschreibt dieser das vorhergehende Ergebnis und schaut ob dieser Wert mit dem Value übereinstimmt. 

page = PAGE
page {
  ##css class in bodytag according to layout
  bodyTagCObject < temp.selectbodytag  
  10 = TEMPLATE
  ...
  10.subparts {
    contentWrap = COA
##Top box
    contentWrap.10 < styles.content.get
    contentWrap.10.wrap = <div id="contentTop">|</div>

    ##floated boxes wrapped in a box
    contentWrap.20 = COA   
    contentWrap.20.if {
      value = 1,2
      isInList.data = levelfield:-2,backend_layout_next_level,slide
      isInList.override.data = TSFE:page|backend_layout
   }
    contentWrap.20.wrap = <div> | </div>
    
    contentWrap.20.10 < styles.content.get
    contentWrap.20.10.select.where = colPos = 1
    contentWrap.20.10.wrap = <div id="contentLeft">|</div>
    contentWrap.20.20 = COA
    contentWrap.20.20 {
      if {
          value = 2
          isInList.data = levelfield:-2,backend_layout_next_level,slide
          isInList.override.data = TSFE:page|backend_layout
      }  
      10 < styles.content.get
      10.select.where = colPos = 2
      10.wrap = <div class="contentMiddle">|</div>
    }
contentWrap.20.30 = COA
    contentWrap.20.30 {
      if {
          value = 3
          isInList.data = levelfield:-2,backend_layout_next_level,slide
          isInList.override.data = TSFE:page|backend_layout
      }  
      10 < styles.content.get
      10.select.where = colPos = 5
      10.wrap = <div class="contentMiddle">|</div>
20 < styles.content.get
      20.select.where = colPos = 6
      20.wrap = <div class="contentMiddle">|</div>
    }
    contentWrap.20.40 < styles.content.get
    contentWrap.20.40.select.where = colPos = 3
    contentWrap.20.40.wrap = <div id="contentRight">|</div>    

##bottom box     
contentWrap.30 < styles.content.get
    contentWrap.30.select.where = colPos = 4
    contentWrap.30.wrap = <div id="contentBottom">|</div>
       
    }
}
 

Sie sind hier: TYPO3 » Tipps & Tricks » Allgemeines » Backendlayout einsetzen

Servicetelefon 0800 - 8976326 (kostenloser Anruf)