Template eines Legacy Plugins mit einem Plugin aus der neuen Struktur überschreiben

Hallo zusammen,

ich versuche ein Template des Advanced Cart Plugins anzupassen (Ein Button im Account neben dem “Alle Artikel in den Warenkorb” Button) .

Und zwar benutze ich die neue Plugin Struktur (custom/plugins/MEINPLUGIN). 

In der Bootstrap habe ich dann ganz normal die template dir hinzugefügt:

public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PostDispatchSecure_Frontend_Account' => 'onPostDispatchAccount',
        ];
    }

 
    public function onPostDispatchAccount(\Enlight_Event_EventArgs $args)
    {
        /** @var \Shopware_Controllers_Frontend_Account $subject */
        $subject = $args->getSubject();
        /** @var \Enlight_View_Default $view */
        $view = $subject->View();
        $view->addTemplateDir(
            $this->getPath() . DIRECTORY_SEPARATOR . 'Resources' . DIRECTORY_SEPARATOR . 'views'
        );

    }

Die .tpl die ich überschreiben will ist Plugins\Community\Frontend\SwagAdvancedCart\Views\frontend\wishlist\restore_button.tpl

also habe ich analog dazu auch die  custom\plugins\WabsoluteExtendedAdvancedCart\Resources\views\frontend\wishlist\restore_button.tpl

angelegt und den einzigen block darin überschrieben.

{extends file="parent:frontend/wishlist/restore_button.tpl"}
{block name="frontend_wishlist_index_list_main_buttons_add"}
    
        {s namespace="frontend/plugins/swag_advanced_cart/plugin" name='AllIntoBasket'}Alle Artikel in den Warenkorb{/s}
    

    TEST
{/block}

Plugin installiert , alles gut.  NIchts neues eigentlich nur scheint das Plugins mit Plugins Überschreiben entweder irgendwie anders zu funktionieren oder garnicht!?

Habe ich vielleicht was übersehen?

VIelen Dank schonmal im Voraus!

Mach ich genau so und funktioniert bei mir. Was mir auffält ist, dass du keinen seprator hinter “views” hast also in etwa so:

        $this->container->get('Template')->addTemplateDir(
            $this->getPath() . '/Resources/Views/'
        );

 

Hmm… daran lag es leider nicht. :frowning:

Benutz du den DIC (also $this->container) ? Vielleicht liegt es an der Reihenfolge, du konntest im alten System die Reihenfolge der Plugins mit dem dritten Parameter von subscribeEvent festlegen. Im neuen System kannst du die Reihenfolge wie folgt festlegen:

public static function getSubscribedEvents() {
    return [
        'EVENT_NAME' => ['onEventFunctionName', 5]
    ];
}

Es werden negative sowie positive Positionszahlen untersützt von -9999 bis 9999. Je höher die Zahl ist, deso später die Ausführung, sprich Plugin callback mit position 2 wird vor plugin mit position 5 ausgeführt bei diesem Event.

@langnickel schrieb:

Benutz du den DIC (also $this->container) ? Vielleicht liegt es an der Reihenfolge, du konntest im alten System die Reihenfolge der Plugins mit dem dritten Parameter von subscribeEvent festlegen. Im neuen System kannst du die Reihenfolge wie folgt festlegen:

public static function getSubscribedEvents() {
return [
‚EVENT_NAME‘ => [‚onEventFunctionName‘, 5]
];
}

Es werden negative sowie positive Positionszahlen untersützt von -9999 bis 9999. Je höher die Zahl ist, deso später die Ausführung, sprich Plugin callback mit position 2 wird vor plugin mit position 5 ausgeführt bei diesem Event.

Ich habe es jetzt sowohl mit  

 $view = $subject-\>View(); $view-\>addTemplateDir ...

und mit container ausprobiert. Leider ohne Erfolg.

Wenn ich das jetzt richtig verstanden habe könnte ich sagen 9999 am ende und dann wird die Action erst ganz am ende ausgeführt?

Das hat jetzt leider auch nicht geklappt :-\

 

das einzige was mir spontan noch einfällt ist, dass die ordner ‚views‘ und ‚Views‘ zwei verschiedene sind (auf unixoiden filesystemen)

Leider auch nicht… danke aber trotzdem!  Smile

Komisch irgendwie … Controller, Models etc. gehen immer nur bei Templates hakt es jedes mal irgendwo…

@wabAB schrieb:

Leider auch nicht… danke aber trotzdem!  Smile

Komisch irgendwie … Controller, Models etc. gehen immer nur bei Templates hakt es jedes mal irgendwo…

Bei mir isses immer ne Kleinigkeit in ExtJS was klemmt :P 

1 „Gefällt mir“

@langnickel schrieb:

@wabAB schrieb:

Leider auch nicht… danke aber trotzdem!  Smile

Komisch irgendwie … Controller, Models etc. gehen immer nur bei Templates hakt es jedes mal irgendwo…

Bei mir isses immer ne Kleinigkeit in ExtJS was klemmt :P 

Ja da is auch son Thema :D 

Falls noch jemand eine Idee hat woran es liegen kann, immer her damit… Solange muss ich das halt auch wenns nicht so gut ist direkt ins community Plugin schreiben.