TYPO3 Blog ++ Typoscript ++ Verwendung eigener Seitentypen in TYPO3

Verwendung eigener Seitentypen in TYPO3

Verwendung eigener Seitentypen in TYPO3

TYPO3 Seitentypen, TYPO3 Conditions
TYPO3 Seitentypen individuell behandeln
Foto: Stefanie, aboutpixel.de

Nach der Erstellung eines eigenen Seitentyps stellt sich natürlich die Frage, wie man diesen nutzen kann um seine - meist komplexere - TYPO3 Seite zu strukturieren.

Ich persönlich habe Seitentypen in meinen Projekten mit folgenden drei Methoden verwenden:
- alternatives TypoScript je nach Seitentyp
- einzelne Objekte unterscheiden sich je nach Seitentyp
- Menüpunkte werden je nach Seitentyp (der Seite des Menüelements) verschieden behandelt.

Alternatives TypoScript oder alternatives Template je nach Seitentyp mit Conditions

Über die Conditions, die wie immer ein hilfreiches Tool zur Verwendung unterschiedlichen TS Codes für unterschiedliche sind, kann man auch für verschiedene Seitentypen (in TYPO3 gespeichert in Tablle page Feld doktype ) verwenden.

  [globalVar = TSFE:page|doktype = 30, TSFE:page|doktype = 32]
    plugin.tx_automaketemplate_pi1.content.file = fileadmin/disco.html
    temp.mainTemplate {
      subparts.content < temp.content
      subparts.oeffnungszeiten < temp.oeffnung
  }
  [globalVar = TSFE:page|doktype = 31]
    plugin.tx_automaketemplate_pi1.content.file = fileadmin/bar.html
    temp.mainTemplate {
      subparts.content < styles.content.get
      subparts.oeffnungszeiten < temp.oeffnung
   }
  [ELSE]
    plugin.tx_automaketemplate_pi1.content.file = fileadmin/standard.html
  [GLOBAL]

Achtung: es ist nicht möglich, die TYPO3 Condionions innerhalb eines Blocks zu verwenden.
richtig:

  [globalVar = TSFE:page|doktype = 30, TSFE:page|doktype = 32]
    temp.mainTemplate {
      subparts.content < temp.content
      subparts.oeffnungszeiten < temp.oeffnung
  }
  [globalVar = TSFE:page|doktype = 31]
    temp.mainTemplate {
      subparts.content < styles.content.get
      subparts.oeffnungszeiten < temp.oeffnung
   }
  [GLOBAL]

falsch:

    temp.mainTemplate {
      [globalVar = TSFE:page|doktype = 30, TSFE:page|doktype = 32] #FALSCH
        subparts.content < temp.content
        subparts.oeffnungszeiten < temp.oeffnung_disco
     [globalVar = TSFE:page|doktype = 31]
       subparts.content < styles.content.get
       subparts.oeffnungszeiten < temp.oeffnung_bar
     [GLOBAL]
  }

Seitentypunterscheidung in TYPO3 mit dem CASE-Objekt

Das CASE Objekt ist ebenfalls eine gute Möglichkeiten bei verschiedenen Seitentypen verschiedene Daten anzuzeigen. Einerseits ist das CASE-Objekt weniger flexibel als die TYPO3 Conditions, andererseits kann es auf einer beliebigen Tiefe der vVerschachtelung von Blöcken angewendet und auch kopiert werden.
Das CASE Objekt enthält immer einen Schlüssel (key), der hier, da es sich um den Seitentyp handelt natürlich auf “doktype” gesetzt werden muss und mehrere Objekte, deren Name dem Schlüssel entsprechen muss, also in diesem Fall der identifikationsnummer des Seitentyps.

temp {
  oeffnungszeiten = CASE
  oeffnungszeiten {
    key.field = doktype
    default = TEXT
    default.value = keine Öffnungszeiten Verfügbar
    30 <  temp.oeffnung_disco
    32 <  temp.oeffnungszeiten.30
    31 <  temp.oeffnung_bar
  }
}

Unterscheidung der TYPO3 Menüpunkte in einem TMENU nach Seitentyp

Wendet man das TYPO3 CASE Objekt (siehe oben) nun innerhalb eines Menüs an, so kann man eine Unterscheidung des Seitentyps für jeden Menüpunkt treffen und darüber die Seitentypen im Menü anzeugen.

Achtung nur Seitentypen kleiner 200 können im Menü angezeigt werden, Alle anderen Seitentypen werden als Sysordner angesehen. Seitentyp 199 wird für den Spacer verwendet und im Menü zwar angezeigt, aber Ihalte dieser Seite können nciht angezeigt werden.

temp.menu = HMENU
temp.menu {
  1 = TMENU
  1 {
    expAll = 1
    wrap = <ul>|</ul>
    NO {
      doNotLinkIt = 1
      stdWrap.cObject = CASE
      stdWrap.cObject {
        key.field = doktype
        default = TEXT
        default {
          field = nav_title // title
          wrap = <li>|</li>
          typolink = uid
        }
        30 = TEXT
        30 {
          field = nav_title // title
          wrap = <li class="disco">|</li>
          typolink = uid
        }
        31 = TEXT
        31 {
          field = nav_title // title
          wrap = <li class="bar">|</li>
          typolink = uid
        }
        32 < temp.menu.1.31
      }
    }
  }
}

, , , , , , , , , , , , , , ,

Hinterlasse eine Antwort