Nachdem ich jetzt seit Jahren meine Inhaltselemente in unlesbaren TCA-Arrays definiere, ist mir endlich die zündende Idee gekommen.
Bei der Integration eine Designs steht man als Entwickler oft vor dem Punkt: Eigentlich wäre es schöner, wenn der Redakteur hier ein einfachen Element mit zwei Feldern hat - aber ach - da muss ich ja wieder TCA schreiben.
Da ich das oft genug gemacht habe, ist das für mich kein Problem. Aber ich habe einen Haufen Kollegen für die ist das ein Graus.
Deshalb hat sich über die Jahre eine Struktur entwickelt die das ganze ein bisschen vereinfachen soll.
Zuerst werden alle Elmente in einem einzigen Array gespeichert.
Zuerst sammle ich alle neuen Elemente in einem Array:
Wird alles in einem Rutsch mittels foreach registriert:
Soweit so gut, aber hey, da war noch was. Wir müssen noch einen Eintrag in pageTsConfig machen. Damit der unser schönes Element auch in NewContentElementWizard angezeigt wird:
Achja und dann brauchen wir auch noch typoscript. Das geht ganz grob so: site/Configuration/typoscript/tt_content.typoscript
Natürlich muss hier noch ein Template erstellt werden. Aber das erspare ich euch.
Wie geschrieben, das Ganze war für die Kollegen ein Graus und dass ich das pageTsConfig schreiben muss hat mich auch ganz schön genervt.
TCA in yaml
Dann kam die zündende Idee: Warum nicht alles in eine yaml-Struktur schreiben? Und wenn ich schon dabei bin, dann zerlege ich noch diesen gruseligen showItem-String.
Das ganze sieht dann so aus:
Jetzt muss ich nur noch das yaml einlesen und in mein Array mergen bevor alles registriert wird.
Ich merge das hier mit dem Array von oben. Dann habe ich immer noch die Möglichkeit, bei komplizierten Anforderungen mit meine Elemente mit php zu beschreiben.
Soweit so gut, aber hey, da war noch was. Wir müssen noch einen Eintrag in pageTsConfig machen. Damit der unser schönes Element auch in NewContentElementWizard angezeigt wird. Um das zu lösen, brauchen wir einen Listener den wir zuerste registrieren müssen.