23.01.2012: Flexforms in der eigenen Extension verwenden
TYPO3-Extensions können vom Benutzer meistens auf zwei Arten administriert werden. Zum einen per Config-Variablen, die an in das Setup des Templates schreiben muss oder ganz bequem per Auswahlfeldern, den so genannten Flexforms, in der jeweiligen Extension selbst. So einfach geht´s!
Um die Flexforms zu aktivieren, muss man lediglich zwei Zeilen Code in der Datei ext_tables.php der jeweiligen Extension ergänzen. Einfach ziemlich zum Schluss einfügen:
//Flexform Setup
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY.'/flexform.xml');
//Flexform Setup end
In diesem Beispiel wird auf die Datei flexform.xml im Ordner pi1 der Extension verwiesen. Diese Datei muss nun angelegt und mit Inhalt befüllt werden:
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:sb_partner/locallang_db.xml:tx_sbpartner_conf</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<what_to_display>
<TCEforms>
<label>LLL:EXT:sb_partner/locallang_db.xml:sb_partner.what_to_display</label>
<config>
<type>select</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">LIST</numIndex>
<numIndex index="1">LIST</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">SINGLE</numIndex>
<numIndex index="1">SINGLE</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">MAILFORM</numIndex>
<numIndex index="1">MAILFORM</numIndex>
</numIndex>
</items>
<maxitems>100</maxitems>
<size>6</size>
<multiple>1</multiple>
<selectedListStyle>width:150px</selectedListStyle>
<itemListStyle>width:150px</itemListStyle>
</config>
</TCEforms>
</what_to_display>
<hideMail>
<TCEforms>
<label>LLL:EXT:sb_partner/locallang_db.xml:sb_partner.hideMail</label>
<config>
<type>select</type>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">LLL:EXT:sb_partner/locallang_db.xml:tx_sbpartner.clicksno</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">LLL:EXT:sb_partner/locallang_db.xml:tx_sbpartner.clicksyes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
</items>
<maxitems>1</maxitems>
<size>1</size>
</config>
</TCEforms>
</hideMail>
<dynField>
<TCEforms>
<label>LLL:EXT:sb_partner/locallang_db.xml:tx_sbpartner_cat.cat</label>
<config>
<type>select</type>
<itemsProcFunc>tx_sbpartner_addFieldsToFlexForm->addFields</itemsProcFunc>
</config>
</TCEforms>
</dynField>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
Dies ist ein Beispiel aus der Extension sb_partner.
Nun kann man auf die jeweiligen Werte in der Extension wie folgt zugreifen:
$this->pi_initPIflexForm(); // Flexforms initalisieren
$this->display= $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'what_to_display', 'sDEF');
In diesem Beispiel greifen wir dann in der Extension auf den Wert mit Namen what_to_display zu, der im XML-Knoten sDEF steckt.
Alles weitere zu den Flexforms findet ich im
TYPO3-Wiki.