Zunächst über den Kickstarter eine neue Extension anlegen. Dabei reicht es auch, wenn man einen Titel angibt, dann ein Frontend Plugin hinzufügt und dort den Typ „New Content Element“ auswählt. Falls man keine weiteren Datenbankfelder benötigt, kann man das Ergebnis schreiben lassen.
Nach der Installation steht der neue Content Element Typ bereits zur Verfügung. Per Default wird nur das Header-Feld angezeigt. Nun gibt es zwei Möglichkeiten: entweder man blendet mehr Felder ein und nutzt die vorhandenen Felder in tt_content (da gibt es viele) oder man nutzt Flexforms für die höhere Flexibilität.
Im ersten Fall kann man die Liste der angezeigten Felder um die benötigten Felder erweitern (ext_tables.php):
$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem']= ...
Im zweiten Fall fügt man folgende Zeilen in ext_tables.php hinzu und legt eine Datei mit der Flexform-Definition an:
$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem']='CType;;4;button;1-1-1, header;;3;;2-2-2,pi_flexform;;;;1-1-1'; $TCA['tt_content']['columns']['pi_flexform']['config']['ds'][','.$_EXTKEY.'_pi1'] = 'FILE:EXT:'.$_EXTKEY.'/flexform.xml';
Ob es geklappt hat, kann man schnell prüfen – Cache löschen und im BE ein neues Content Element angelegen, wenn unter dem Header-Feld ein weiteres Feld mit mehr als nur „sDEF“ angezeigt wird, dann wird das Flexform geladen und ausgewertet.
Links:
Extension Development im TYPO3 Wiki
UPDATE: Der von mir angegebene Code-Schnipsel zum Verwenden der Flexform klappt anscheinend nicht in TYPO3 4.2.8. Der kleine aber feine Unterschied, damit es auch funktioniert, ist das Sternchen (*) vor dem Komma:
$TCA['tt_content']['columns']['pi_flexform']['config']['ds']['*,'.$_EXTKEY.'_pi1'] = 'FILE:EXT:'.$_EXTKEY.'/flexform.xml';