Um ein bestehendes Extbase-Plugin zu erweitern, muss man den Eintrag des Plugins in den TYPO3_CONF_VARS erweitern. Hierfür haben wir folgende Hilfs-Methode erstellt:
public static function configurePluginAddAction($extensionName, $pluginName, $controllerName, $newAction, $cachable = true) {
$delimiterPosition = strrpos($extensionName, '.');
if ($delimiterPosition !== false) {
$extensionName = substr($extensionName, $delimiterPosition + 1);
}
$extensionName = str_replace(' ', '', ucwords(str_replace('_', ' ', $extensionName)));
$newAction = trim($newAction);
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['controllers'][$controllerName]['actions'][] = $newAction;
if (!$cachable) {
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['controllers'][$controllerName]['nonCacheableActions'][] = $newAction;
}
}
Anschließend muss in der Datei ext_localconf.php noch der passende Aufruf erstellt werden. In diesem Beispiel erwetiern wird das Cart-Plugin der TYPO3 Cart Extension (für ecommerce unter TYPO3) um eine neue action namens "cashdesk".
\Varioous\VaTemplate\Utility\HelperUtility::configurePluginAddAction(
'Cart',
'Cart',
'Extcode\Cart\Controller\Cart\CartController',
'cashdesk',
false
);
Im nächsten Schritt haben wir den Cart-Controller von Cart per XCLASSes (Extending Classes) um die neue action erweitert:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\Extcode\Cart\Controller\Cart\CartController::class] = [
'className' => \Varioous\VaTemplate\Xclass\CartController::class,
];
Und hier noch die neue CartController-Klasse, welche vom CartController der cart-Extension erbt:
<?php
namespace Varioous\VaTemplate\Xclass;
class CartController extends \Extcode\Cart\Controller\Cart\CartController
{
public function cashdeskAction()
{
}
}
Aus der Reihe TYPO3 Tipps und Tricks
-
Microsoft SQL Server (MSSQL) und TYPO3 in einem Docker-Container
-
Manueller/Programmatischer Login in Controller-Action (TYPO3 9)
Weitere interessante Beiträge zum Thema TYPO3 findest du hier.
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: