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.

 


Kommentare

No comments