TYPO3 / fluidcontent_core / gridelements / Standard Content Elemente / anderes Layout

Praxisbeispiel mit fluidcontent_core und gridelements

Problemstellung

Ich hatte das Problem, dass ich in einem Setup mit fluidcontent_core und gridelements in einem fluid Template (z.B. für das Standard Content Element „Text“) gerne gewusst hätte, ob das Element in einem (bestimmten) gridelements Kontext gerendert wird.

Umgesetzte Lösung

a) gridelements Setup für das Layout mit dem Alias „special“:

tt_content.gridelements_pi1.20.10.setup {
  special < lib.gridelements.defaultGridSetup
  special {
    cObject = FLUIDTEMPLATE
    cObject {
      file = EXT:template/Resources/Path/To/Template/Special.html
    }
    columns.default.renderObj {
      10 = LOAD_REGISTER
      10.grid = 1
      30 = RESTORE_REGISTER
    }
  }
}

Hier setze ich einfach den Wert eines Registers „grid“ auf einen Wert 1.
columns.default.renderObj.20 ist eine Referenz auf tt_content (ein CASE Objekt, das auch ein stdWrap Property kennt).

b) Im gridelements Template (Special.html) wird der Bereich (im Beispiel z.B. mit dem Wert 20) wie gewohnt ausgegeben.

<f:format.raw>{data.tx_gridelements_view_column_20}</f:format.raw>

c) im fluidcontent_core Template (Text.html) allerdings wird das Register ausgewertet und darauf hin z.B. das Layout verändert:

<f:if condition="{v:variable.register.get(name: 'grid')} == 1">
  … do something special
</f:if>

Eingesetzte Extensions

Für das Beispiel kam fluid, fluidcontent, fluidcontent_core, gridelements und vhs zum Einsatz.
Den v:variable.register.get ViewHelper gibt es in der vhs Extension.