In einer TYPO3 9 Installation mit Gridelements habe ich ein extrem flexibeles Accordion-Element erstellt. Es gibt dabei ein Gridelement „Accordion-Container“, das als Container für alle zusammengehörigen Accordion-Inhaltselemente dienen soll. Weiterhin gibt es ein „Accordion-Content“ – damit können mehrere Inhaltselemente gruppiert werden. Der Container ist notwendig, um das Accordion-typische Verhalten zu realisieren: man klickt ein Element zum Öffnen an und alle anderen schließen sich. Die klickbare Überschrift wird im Accordion-Content-Element hinterlegt. Im Accordion-Container können Einstellungen wie Farbe und Verhalten für das gesamte Accordion vorgenommen werden.
Und das ist genau das Problem. Sobald ich mich im Context des Accordion-Content befinde, kenne ich die Einstellungen wie Farbe und Verhalten nicht mehr – die sind ja im Container (aka Parent) hinterlegt.
Die neueste Version von Gridelements nutzt DataProcessing, also beschloss ich einen DataProcessor einzusetzen, um an die Daten des übergeordneten Elements ranzukommen:
tt_content.gridelements_pi1.dataProcessing { 20 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor 20 { if.equals.field = tx_gridelements_backend_layout if.value = accordion-content table = tt_content pidInList.field = pid where = uid=###uid### AND deleted=0 AND hidden=0 markers.uid.field = tx_gridelements_container as = parent dataProcessing { 10 = Vendor\MyExtension\DataProcessing\FlexformDataProcessor 10 { as = flexform_data } } } }
Die Implementierung des FlexformDataProcessor habe ich bereits in einem anderen Beitrag beschrieben.
Nachdem ich das implementiert hatte, fiel mir ein, dass ich mein Problem bestimmt auch mit variable.set aus dem Fluid ViewHelper-Set lösen könnte – und siehe da, das geht auch.
Danke für deinen Beitrag! Ich hatte ein Problem, welches ich nur mit dem kleinen Zusatz „pidInList.field = pid“ lösen konnte. Und dabei hast du diesen Post erst vor drei Tagen veröffentlicht