Extbase Plugins mit TypoScript einbinden

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 😉

5 Gedanken zu „Extbase Plugins mit TypoScript einbinden“

  1. 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.

  2. 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.

  3. 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):

    lib.sidebar {
    
        # [...]
    
        10 = USER
        10 { 
            # [...]
    
            #controller = Cart
            #action = sidebar
    
            # Erforderliche Angabe
            switchableControllerActions {
                    Cart {
                            1 = sidebar
                    }
            }
         
           # [...]
        }
    }

     

Schreibe einen Kommentar zu anjalis Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert