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.
# login
ajax_vauser_login < ajax_vauser_filter
ajax_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: