Template Anpassungen durch eigenes Plugin

Trotz eingehaltener Strukturen im Plugin werden im Views Ordner abgelegte template Anpassungen nicht im Shop übernommen.

Ich habe das Standard Design von Shopware.

Im Plugin liegen die Templateänderungen unter

Views/frontend/account/
Wenn zusätzliche Variablen übergeben werden , wende ich
$view->addTemplateDir(__DIR__. “/Views/” );

an. Aber was ist mit den Templates, die ich auf Grund des Plugins nur vom Design anpasse ?
Diese werden nicht aus dem Views Ordner übernommen sondern müssen im eigenen themes Ordner liegen.

 

Einfaches Beispiel:

/frontend/account/orders.tpl

{extends file='parent:frontend/account/orders.tpl'}

{block name="frontend_account_orders_table_head_dispatch"}
    {s name="OrderColumnPrintStatus"}Druckdatei{/s}
{/block}

Dieser geht nicht im Pluginordner unter /Pluginname/frontend/account/orders.tpl

Wenn du den Template Ordner so einfügst: $view->addTemplateDir(__DIR__ “/Views/” );

Müsste dein Template orders.tpl in /Pluginname/Views/frontend/account liegen

Wenn ich aber im Bootstrap Daten in einem Event ändere, für das Template, z.b

  $this->subscribeEvent(
            'Shopware_Modules_Admin_GetOpenOrderData_FilterResult',
            'getOpenOrderAttributes'
        );

und ich dann in orders.tpl die Spalte umbenennen will, habe ich kein $view->addTemplateDir(__DIR__ “/Views/” );  ausgeführt.

Somit findet er dort das Template nicht, richtig ?

 

Das bedeutet, er schaut nicht automatisch im Pluginordner nach Templates ?

@megadruck schrieb:

Das bedeutet, er schaut nicht automatisch im Pluginordner nach Templates ?

Hallo,

ja das bedeutet es. Man muss natürlich auch ein Event in der Bootstrap - Datei übergeben, wo die Template-Dateien „ausgespielt“ werden sollen.

Beste Grüße

Sebastian

Nein, das Event ist dafür nicht geeignet. Zum Hinzufüge des Template Verzeichnisses benutzt du bitte ein Dispatch Event wie z.B.
Enlight_Controller_Action_Post Dispatch Secure

Viele Grüße

Danke Euch

        //define own Template directory
        $this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatchSecure_Frontend_Account',
            'onActionFrontendAccount'
        );

hab ich jetzt genutzt, aber das obige orders.tpl wird nicht genutzt.

 

  public function onActionFrontendAccount(Enlight_Event_EventArgs $args)
    {
        $controller = $args->getSubject();
        $view = $controller->View();
        $view->addTemplateDir( __DIR__. "/Views/");

    }