TYPO3 Erweiterungen im bisherigen pi_base-Stil kann man ganz einfach mit
lib.foo < plugin.tx_extensionkey_pluginname |
in ein beliebiges TypoScript Objekt einfügen.
Mit neueren Erweiterungen die man mit Extbase und Fluid erstellt, gestaltet sich das (noch) etwas schwieriger. Hier muss man einen Umweg über eine userFunc mit dem Extbase Bootstrapper gehen.
Bei dem Beispiel handelt es sich um eine kleine Webshop Erweiterung die ich für ein Projekt geschrieben habe. Ziel ist es, eine Warenkorb Übersicht in der Sidebar auszugeben:
lib.sidebar = COA lib.sidebar { # [...] 10 = USER 10 { userFunc = tx_extbase_core_bootstrap->run # TYPO3 6.0 / Namespaces Kompatibilität vendorName = Foo pluginName = Pi2 extensionName = ExtensionKey controller = Cart action = sidebar switchableControllerActions { Cart { 1 = sidebar } } settings =< plugin.tx_extensionkey.settings persistence =< plugin.tx_extensionkey.persistence view =< plugin.tx_extensionkey.view } } |
Jetzt muss nur noch im Cart Controller (wie im TS angegeben) die sidebarAction implementiert werden, in der unsere gewünschte Ausgabe generiert wird. Das erfolgt üblicherweise mit einem Fluid Template – dazu wiederum das entsprechende Template sidebar.html im Templates/Cart Verzeichnis anlegen, in der sidebarAction mit $this->view->assign() die Templatevariablen zuweisen und schließlich die fertige Ausgabe mit return $this->view->render(); zurückgeben. Das return Statement bitte nicht vergessen denn sonst passiert gar nichts 😉
hi,
i want to include extbase plugin with typoscript in TYPO 4.6 but it doesn’t work http://stackoverflow.com/questions/8759942/typo3-4-6-include-extbase-plugin-with-typoscript and i also tried it according your example, but nothing works. Thanks.
Wenn wir ab der TYPO3-Version 6.0 mit Namespaces arbeiten, laufen wir in einen Fehler, da der Dispatcher die Klasse Tx_Extensionname_Controller_CartController aufrufen möchte und nicht findet – logisch, die Klasse gibt’s ja unter der Benamung so auch nicht.
Lösung:
Wenn wir bei extensionName etc. noch folgendes angeben:
vendorName = xyz
Wenn ein vendorName angegeben ist: der controller-Name wird nach dem Namespace-Schema zusammengebaut: VendorName\ExtensionName\Controller\CartController
Wenn KEIN vendorName angegeben ist: der controller-Name wird nach dem klassischen Schema zusammengebaut: Tx_Extensionname_Controller_CartController
den vendorName findet ihr in der Controller-Klasse zu Beginn der Namespace-Deklaration ganz oben.
Danke Tina!
Danke für diesen wunderbaren Tipp! Ich habe schon ewig gesucht, woran es liegen kann, dass TYPO3 einen alte tx_-Controller analysieren möchte, obwohl die Extension auf Namespaces umgestellt wurde.
Obacht bei Verwendung von switchableControllerActions: nutzt die Extension diese Methode, so muss die gewünschte Controller-Action-Kombination in TypoScript angegeben werden (dafür kann aber wohl die Angabe von controller und action entfallen):