Configurable Plugin Namespaces mit TYPO3
Mehrere Plugins auf einer Seite

Auch ich stand schon öfter vor dem Problem, dass ich auf einer Seite gerne mehrmals dasselbe Plugin einbinden wollte. Da diese Plugins in der Regel den gleichen Namespace verwenden, ist dies nicht so einfach möglich. In diesem Blogbeitrag werde ich zeigen, wie es möglich ist mehrere Plugins auf die gleiche Seite zu setzen, und wie man diese auch über TypoScript einbinden kann. Dies funktioniert dadurch, dass man den Namespace für das jeweilige Plugin configurable(konfigurierbar) macht.

Wir stellen uns folgendes Szenarie vor: Es existiert ein User-Plugin, welches Funktionen zum Login und Registrieren zur Verfügung steht (über switchable controller actions). Nun wird das Login-Plugin immer im Head der Seite eingebunden und sitzt somit auf jeder Seite. Setzt man nun das Registrierungsplugin auf die Registrierungsseite, behindern sich diese 2 Plugins gegenseitig, da nicht unterschieden werden kann, zu welchem Plugin, welche Parameter gehören (in der Regel „tx_xx_yyyyy“ – zum Beispel „tx_va_user“). 

Um diesen Problem Abhilfe zu schaffen, bedienen wir uns des „configurable plugin namespace“. Dabei wird über die Flexform-Einstellungen konfiguriert, dass der Benutzer beim Plugin den Namespace eingeben kann. Dieser wird nun für das Plugin verwendet. Danach werde ich noch zeigen, wie man ein solches Plugin über TypoScript einbindet.

1) Plugin Konfiguration in ext_localconf.php

/* User Plugin */\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin('Varioous.' . $_EXTKEY, 'User',     array(        'User' => 'register, login, logout'    ), // non-cacheable actions    array(        'User' => 'register, login, logout'    ));

2) Plugin Konfiguration in ext_tables.php

/* USER */\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin('Varioous.' . $_EXTKEY, 'User', 'Varioous / Benutzer');$pluginSignature = $extensionName . '_' . strtolower('User');$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:va_user/Configuration/FlexForms/flexform_user_plugin.xml');

3) Flexform Einstellungen in flexform_user_plugin.xml

<t3datastructure>    <sheets>        <sdef>            <root>                <tceforms>                    <sheettitle>Allgemeine Einstellungen</sheettitle>                </tceforms>                <type>array</type>                <el>                    <view.pluginnamespace>                        <tceforms>                            <label>Plugin Namespace</label>                            <config>                                <type>input</type>                                <eval>trim,nospace</eval>                            </config>                        </tceforms>                    </view.pluginnamespace>                    <switchablecontrolleractions>                        <tceforms>                            <label>Ansicht</label>                            <onchange>reload</onchange>                            <config>                                <type>select</type>                                <items type="array">                                    <numindex index="0" type="array">                                        <numindex index="0">Varioous Benutzer / Registrierung</numindex>                                        <numindex index="1">User->register</numindex>                                    </numindex>                                    <numindex index="1" type="array">                                        <numindex index="0">Varioous Benutzer / Login/Logout Handling</numindex>                                        <numindex index="1">User->login;User->logout</numindex>                                    </numindex>                                </items>                            </config>                        </tceforms>                    </switchablecontrolleractions>                </el>            </root>        </sdef>    </sheets></t3datastructure>

5) Plugin per TypoScript einbinden

Hier sieht man in Zeile 6, dass man hier den Namespace angeben muss, welcher in Schritt 4 im Backend konfiguriert wurde.

# loginajax_vauser_login < ajax_vauser_filterajax_vauser_login {    typeNum = 666    10 < tt_content.list.20.vaaldivinoteca_user    10.view.pluginNamespace = tx_vauser_user_login    config {        additionalHeaders = Content-type:application/json    }}

Ich hoffe dem ein oder anderen mit diesem Tipp geholfen zu haben. Über Verbesserungsvorschläge und Feedback sind wir natürlich wie immer froh!

Wir entwickeln digitale Lösungen mit Leidenschaft

Warum wir das tun? Weil die Verwirklichung Ihrer Vision unser größter Anspruch und die schönste Anerkennung ist. Deshalb nehmen wir uns gerne ausreichend Zeit für die Realisierung Ihres digitalen Projekts.

Kontaktieren Sie uns, wir sind gerne für Ihre Fragen da:

Passend zu diesem Thema:

Interkulturelles Webdesign

Interkulturelles Webdesign

Abhängig davon in welcher Kultur wir leben und wie wir aufwachsen (Erziehung, Familie, Freunde), werden Wahrnehmung und Vorlieben beeinflusst. Auch da…

Das war das TYPO3camp München 2019

Das war das TYPO3camp München 2019

Vom 13. – 15. September fand das TYPO3camp 2019 in München statt und auch varioous war vor Ort um sich mit anderen TYPO3-Entwicklern und Unternehmen z…

TYPO3 9 Custom Content Elements

TYPO3 9 Custom Content Elements

TYPO3 bietet in Sachen Inhalts-Pflege schon eine Vielzahl an Content Elementen an. Solche sind z.B. Text & Medien (textmedia), Menüs (menu_pages,...) …