Inhalt oder Navi in Marginalspalte über Dropdown in Seiteneigenschaften optional auswählbar machen

Montag, 26. Mai 2014

Aufgabe: Die Navigation (oder jeder beliebige andere Inhalt) soll in einem TemplaVoila-Layout nur dann angezeigt werden, wenn man in den Seiteneigenschaften bei einem Dropdown “Anzeigen” gewählt hat. Dabei soll die Einstellung auf Unterseiten vererbt werden.

1. TemplaVoila: Auswahlliste erstellen

Im TemplaVoila wird für das Seitentemplate ein Dropdown bereitgestellt. Als Variablen-Name (fieldname) wurde “field_nav_marginal” gewählt. Im Dropdown unter den Seiteneigenschaften einer Seite kann zwischen drei Optionen gewählt werden.

<type>select</type>
<items type="array">
   <numIndex index="0" type="array">
      <numIndex index="0">Von übergeordneter Seite übernehmen</numIndex>
      <numIndex index="1"></numIndex>
   </numIndex>
   <numIndex index="1" type="array">
      <numIndex index="0">Nicht anzeigen</numIndex>
      <numIndex index="1">-1</numIndex>
   </numIndex>
   <numIndex index="2" type="array">
      <numIndex index="0">Anzeigen</numIndex>
      <numIndex index="1">1</numIndex>
   </numIndex>
</items>
<default></default>

2. Im TypoScript Setup der Webseite: Navigation erstellen

Weil wir die Navigation später per override verschwinden lassen wollen, schieben wir das HMENU in den stdWrap.wrap eines TEXT-Objektes. Ich habe keine andere Möglichkeit gefunden, ein Object später per override mit einem leeren String zu überschreiben – aber vielleicht hat jemand ja eine bessere Lösung :)

lib.nav_sub = TEXT
lib.nav_sub.stdWrap.wrap.cObject = HMENU
lib.nav_sub.stdWrap.wrap.cObject {
   entryLevel = 2
   special.value = 564
   1 = TMENU
   ...
}

3. Im TypoScript Setup das override machen

Für das override verwenden wir die Extension kb_tvcontslide.

lib.nav_sub {
   stdWrap.wrap.override.cObject = TEXT
   stdWrap.wrap.override.cObject {
      value = |
      if.isPositive.cObject = TEXT
      if.isPositive.cObject {
         postUserFunc = tx_kbtvcontslide_pi1->main
         postUserFunc.field = field_nav_marginal
      }
      if.negate = 1
   }
}

Für Suchmaschinen: Inhalt der Marginspalte optional anzeigen lassen, per Auswahlliste wählen, ob Inhalt in TemplaVoila angezeigt werden soll. Inhalt anzeigen, verbergen, von übergeordnete Seite übernehmen – in Seiteneigenschaften auswählbar machen.