TYPO3 Tipps und Tricks: (bestehendes) Plugin erweitern / Extend existing Plugin

In diesem Blogbeitrag zeigen wir, wie man ein bestehendes Plugin (aus einer anderen Extension) erweitern und eine neue action hinzufügen kann.

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:

<?phpnamespace Varioous\VaTemplate\Xclass;class CartController extends \Extcode\Cart\Controller\Cart\CartController{    public function cashdeskAction()    {    }}

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:

TYPO3 Tipps und Tricks: Cache für einzelne Extbase-Objekte leeren

TYPO3 Tipps und Tricks: Cache für einzelne Extbase-Objekte leeren

Kürzlich bin ich bei einem Projekt vor folgendem Problem gestanden: Per Plugin werden Extbase-Objekte auf einer Seite ausgegeben und diese auch gecach…

TYPO3 Tipps und Tricks: Manueller/Programmatischer Login in Controller-Action (TYPO3 9)

TYPO3 Tipps und Tricks: Manueller/Programmatischer Login in Controller-Action (T…

Manchmal gibt es bei Web-Projekten die Notwendigkeit einen Login programmatisch (manuell, im PHP-Code) durchzuführen. Ein Kunde hat vor kurzem folgend…

TYPO3 Tipps und Tricks: Microsoft SQL Server (MSSQL) und TYPO3 in einem Docker-Container

TYPO3 Tipps und Tricks: Microsoft SQL Server (MSSQL) und TYPO3 in einem Docker-C…

In diesem Blogbeitrag zeigen wir, wie man eine Microsoft SQL-Server (MSSQL) Datenbank in einem Docker-Container mit ddev laufen lässt. Zusätzlich werd…