entwicklung, Extensionentw.

FlexForms and tabs for pluginconfiguration

(This article is currently in translating...)

 

To configure frontend plugins with FlexForms has much advantages:

  1. Man kann viele Konfigurationen nutzerfreundlich direkt im Plugin vornehmen, ohne die Tabelle und das TCA tt_content mit eigenen Feldern erweitern zu müssen. So bleibt diese Tabelle sauberer und es ist kein Problem weitere Konfigurationen hinzuzufügen.
  2. Eine Möglichkeit ein anderes Templatefile und andere Konfigurationen direkt im Plugin anzugeben stellt eine optimale Möglichkeit dar ein Plugin mehrfach mit unterschiedlichem Erscheinungsbild in einer Seite zu verwenden. Über Typo-Script ist dies im Normalfall nicht möglich.


Sample configuration in the News Plugin

Flex Forms in your own Extension:

Im Kickstarter gibt es derzeit noch keine Vorbereitung für FlexForms in Erweiterungen, darum muß nach der Erstellung einer Erweiterung selbst Hand angelegt werden. Folgende Schritte sind möglich:

  1. Create a file flexform_ds.xml in the Extensionfolder. There you store the Datastructure for the FlexForm (See Core Doku for options: Dokumentation zur Core API )
  2. Edit the file ext_tables.php and configure your FE-plugin to show your FlexForm:


    $TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY.'_pi1']=
    'layout,select_key,pages,recursive';

    $TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']=
    'pi_flexform';
    t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY.'/flexform_ds.xml');

Et voila: You have the FlexForm in your Pluginconfiguration in the BE.

 

Read the Configuration in your Extensions

Die eingestellten Werte können zum Bespiel in einer init() function in der Erweiterung ausgelesen werden. Dazu reichen folgende Befehle:

$this->pi_initPIflexForm();
$this->pi_getFFvalue($this->cObj->data['pi_flexform'], <feldname>, <sheetname>);

 

Tips:

  1. Am flexibelsten lassen sich Erweiterungen konfigurieren wenn für die vorgesehenen FlexForm Werte TYPO-Script Entsprechungen vorhanden sind. Ist kein Wert im FlexForm der Erweiterung angegeben kann dann auf entsprechende Wert aus den TS Eigenschaften zurückgegriffen werden.
  2. Erlaubt man das direkte anhängen einer Datei (beispielsweise eines Templates) so wird die Datei direkt in der Datenbank gespeichert. Jede Änderung an einem Template erfordert das man dies auch jedesmal wieder der Erweiterung hinzufügt (Beispiel tt_news). Man könnte sich auch überlegen einfach nur den Pfad zum Template angeben zu lassen.

Examplecontent of the flexform_ds.xml file (copy and paste):

<T3DataStructure>
  <meta>
    <langDisable>1</langDisable>
   
  </meta>
  <sheets>
    <sDEF>
      <ROOT>
        <TCEforms>
          <sheetTitle>LLL:EXT:danp_libs/locallang_db.php:flexform.generaltab</sheetTitle>
        </TCEforms>
        <type>array</type>
        <el>
          <what_to_display>
            <TCEforms>
              <label>LLL:EXT:danp_libs/locallang_db.php:flexform.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">LATEST</numIndex>
                    <numIndex index="1">LATEST</numIndex>
                  </numIndex>
                  <numIndex index="2" type="array">
                    <numIndex index="0">SINGLE</numIndex>
                    <numIndex index="1">SINGLE</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>      
          <template>
            <TCEforms>
              <exclude>1</exclude>
              <label>LLL:EXT:danp_libs/locallang_db.php:flexform.template</label>
              <config>
                <type>input</type>       
              </config>
            </TCEforms>
          </template>
          <pages>
            <TCEforms>
              <exclude>1</exclude>
              <label>LLL:EXT:lang/locallang_general.php:LGL.startingpoint</label>
              <config>
                <type>group</type>
                <internal_type>db</internal_type>
                <allowed>pages</allowed>
                <size>3</size>
                <maxitems>22</maxitems>
                <minitems>0</minitems>
                <show_thumbs>1</show_thumbs>
              </config>
            </TCEforms>
          </pages>
          <recursive>
            <TCEforms>
              <label>LLL:EXT:lang/locallang_general.php:LGL.recursive</label>
              <config>
                <type>select</type>
                <items type="array">
                  <numIndex index="0" type="array">
                    <numIndex index="0"></numIndex>
                    <numIndex index="1"></numIndex>
                  </numIndex>         
                  <numIndex index="1" type="array">
                    <numIndex index="0">LLL:EXT:cms/locallang_ttc.php:recursive.I.1</numIndex>
                    <numIndex index="1">1</numIndex>
                  </numIndex>
                  <numIndex index="2" type="array">
                    <numIndex index="0">LLL:EXT:cms/locallang_ttc.php:recursive.I.2</numIndex>
                    <numIndex index="1">2</numIndex>
                  </numIndex>
                  <numIndex index="3" type="array">
                    <numIndex index="0">LLL:EXT:cms/locallang_ttc.php:recursive.I.3</numIndex>
                    <numIndex index="1">3</numIndex>
                  </numIndex>
                  <numIndex index="4" type="array">
                    <numIndex index="0">LLL:EXT:cms/locallang_ttc.php:recursive.I.4</numIndex>
                    <numIndex index="1">4</numIndex>
                  </numIndex>
                  <numIndex index="5" type="array">
                    <numIndex index="0">LLL:EXT:cms/locallang_ttc.php:recursive.I.5</numIndex>
                    <numIndex index="1">250</numIndex>
                  </numIndex>
                </items>
                <minitems>0</minitems>
                <maxitems>1</maxitems>
                <size>1</size>
              </config>
            </TCEforms>
          </recursive>
        </el>
      </ROOT>
    </sDEF>
  </sheets>
</T3DataStructure>

blog comments powered by Disqus
blogroll