Plugins in Extbase Extensions registrieren

Plugins sind nun ziemlich schnell in TYPO3 registriert.
Ein paar Gedanken sollte man sich vorher trotzdem machen, aber zunächste das Snippet:

ext_tables.php

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    $_EXTKEY, 'myplugin', 'Plugin Titel'
);

ext_localconf.php

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'MyVendor.' . $_EXTKEY,
    'myplugin',
    array(
        'ControllerA' => 'function1, function2',
        'ControllerB' => 'function1
    ),
    array(
        'ControllerA' => 'function2'
    )
);

Mehr braucht es zunächst nicht. Danach steht euch das Plugin beim einfügen eines neuen Contentelemenetes vom Typ "Plugin" zur Verfügung.

In der ext_tables wird das Plugin registriert. Dort muss nur ein Plugin Name und der Titel (erscheint nachher in der CE-Auswahl unter Plugins) vorgegeben werden.

In der ext_localconf wird das Plugin konfiguriert. Hier muss zusätzlich der Vendor Name, wie auch der Plugin Name (identisch zur ext_tables.php) eingetragen werden.

Danach folgend zwei Arrays in denen alle erlaubten Controller / Funktionen Varianten deklariert werden. Im ersten Array stehen die Funktionen die gecached werden sollen, im zweiten Array alles was vom Cache ausgenommen werden muss.

Dort wo das Plugin eingebunden ist, wird dann als erstes die ERSTE Controller / Funktion ausgeführt.


Plugin mit zusätzlicher Flexform registrieren

Wer nichts mit dem Begriff Flexforms anfangen kann: Bish hierher kann man das eigene Plugin über eine neues Contentelement vom Typ "Plugin" auf einer Seite einbinden. Ihr kennt das aber bestimmt alle, man fügt ein Plugin ein, und danach werden weitere Einstellungsmöglichkeiten für das Plugin angezeigt. Diese Technik beruht auf Flexforms.

Um in der Extension Flexform zur registrieren ist folgender Aufruf erforderlich:

ext_tables.php

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
        $_EXTKEY, 'myplugin', 'Plugin Titel'
);
$pluginSignature = str_replace('_', '', $_EXTKEY) . '_myplugin';
$TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:' . $_EXTKEY . '/Configuration/FlexForms/flexform_forms.xml');

Zunächst erfolgt die EXT Registrierung wie oben beschrieben. Danach wird die Plugin Signature erstellt und die Flexform hinzugefügt. Flexforms residieren normalerweiser im Verzeichnis my_extension/Configuration/Flexforms. Der Dateiname muss in der letzten Zeile angepasst werden.


Eine einfache Flexform

Flexforms sind ein ausgiebiges Thema, vielleicht an dieser Stelle in nächster Zeit mehr. Um die oben beschriebene Einbindung testen zu können, reicht uns eine einfache Version die die settings ergänzt:

my_extension/Configuration/FlexForms/myflexform.xml

<T3DataStructure>
    <meta>
        <langDisable>1</langDisable>
    </meta>
    <ROOT>
        <el>
            <settings.header>
                <TCEforms>
                    <exclude>1</exclude>
                    <label>Betreff</label>
                    <config>
                        <type>input</type>
                        <eval>trim</eval>
                    </config>
                </TCEforms>
            </settings.header> 
        </el>
    </ROOT>
</T3DataStructure>

Damit könnt Ihr innerhalb eures Controllers oder Fluid Template auf den Wert via {settings.header} zugreifen. 

Über Flexforms könnt ihr Datensätze aus Tabellen auslesen, die Controllerfunktion auswählen und vieles mehr ... Grade bei umfangreichen Plugins lohnt sich ein tieferer Einstieg in das Thema.

Weitere Artikel zu diesem Thema:

Empfehlenswerte Lektüre:

TYPO3 Extbase: Moderne Extension-Entwicklung für TYPO3

Ein nahezu perfektes Buch für TYPO3 Extensionentwickler die mit Extbase und Fluid beginnen, aber auch erfahrene Entwickler finden noch Anregungen um ihre eigene Arbeit ständig zu verbessern. Sehr ausführlich, kurzweilig, kein Lesestoff für die Couch sondern eher ein Mitmachbuch das Spaß und Unterstützung bei der eigenen Extensionentwicklung bietet.

Kommentare

keine Kommentare vorhanden


Kommentar verfassen

Die Email Adresse wird nicht veröffentlicht.