Inject Custom CSS Datei für Backend Plugin im 5.2 System

Ich habe schon so viele Kombinationen versucht und beispiele aus anderen Plugins versucht abzuleuten, aber ich schaffe es nicht, dass im Backend meine custom CSS-Datei mitgeladen wird.

Hier ist der letzte Stand den ich habe:

// Datei: /Resources/Views/backend/index/header.tpl

{extends file="parent:backend/index/header.tpl"}

{block name="backend/base/header/css" append}
    
{/block}

// Datei .php

    public static function getSubscribedEvents()
    {
        return [            
            'Enlight_Controller_Action_PostDispatchSecure_Backend_Index'
            => 'onPostDispatchSecureBackendIndex'
        ];
    }

    public function onPostDispatchSecureBackendIndex(\Enlight_Event_EventArgs $args) {
        $this->container->get('Template')->addTemplateDir(
            $this->getPath() . '/Resources/Views/'
        );
    }

 

Hallo langnickel,

die Template Erweiterung funktioniert für das Backend ein bisschen anders als im Frontend.
Probiere mal folgenden Code in deiner Event Callback Methode:

public function onPostDispatchSecureBackendIndex(\Enlight_Event_EventArgs $args) {
    $this->container->get('Template')->addTemplateDir(
        $this->getPath() . '/Resources/Views/'
    );
    $view->extendsTemplate('../Resources/Views/backend/index/header.tpl');

}

Deine tpl Datei musst du dann auch noch ein bisschen ändern. Der „extends“ Befehl muss raus. 

{block name="backend/base/header/css"}
    {$smarty.block.parent}
    
{/block}

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Danke, das hatte ich ebenfalls schon probiert, stoß dann aber auf folgende Expcetion:

Fatal error: Uncaught SmartyException: Unable to load template snippet 'backend/index/index.tpl|../Resources/Views/backend/index/header.tpl' in 

und wenn ich den relativen Pfad rausnehme un ändere in
 

$args->getSubject()->View()->extendsTemplate('backend/index/header.tpl');

kommt zwar keine Exception, aber der tag is trotzdem nicht da :confused:

Übringens: kleiner Fehler bei dir ?:

statt $view eventuell 

 $args-\>getSubject()-\>View()-\>

benutzen ?

Hallo langnickel,

ja genau. Hatte das aus einem Plugin kopiert und da ist in $view das gespeichert, was du geschrieben hattest  Wink

Zu dem Fehler: Versuche mal durch einen weiteren Unterordner einen anderen „Namespace“ für deine Template Datei einzuführen. Also so was wie: „/Resources/Views/backend/meinPlugin/index/header.tpl“
Zusätzlich solltest du das mit den Punkten überprüfen: Zwei Punkte „…“ bedeutet, dass Shopware beim laden des Templates erstmal einen Ordner hoch geht. Je nach dem, wo du dieses Event abfängst, musst das gesetzt werden, oder aber auch nicht.

Grundsätzlich bitte nicht einfach alles blind kopieren  Smile Ich kenne dein Plugin und dessen Aufbau nicht, kann also meine Aussagen nicht zu 100% verifizieren und testen  Wink

Viele Grüße aus Schöppingen

cool Michael Telgmann

Danke, naja blind kopiert hab ichs nicht, sonst hätt ich das mit der $view nicht erwähnt :), und dass mit den relativen Pfaden das war semi-blind weil ich dachte, das gehört dazu. Das mit dem namespace hat geklappt, daran lags. danke :slight_smile:

Für die Nachwelt: So kann man eine custom CSS-.Datei im 5.2 System dem backend hinzufügen:

    // Plugin PHP-Datei:

    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PostDispatchSecure_Backend_Index'
            => 'onPostDispatchSecureBackendIndex'
        ];
    }

    public function onPostDispatchSecureBackendIndex(\Enlight_Event_EventArgs $args) {
        $this->container->get('Template')->addTemplateDir(
            $this->getPath() . '/Resources/Views/'
        );
        $args->getSubject()->View()->extendsTemplate('backend//index/header.tpl');
    }


    // ../Resources/Views/backend//index/header.tpl:
    {block name="backend/base/header/css"}
        {$smarty.block.parent}
        
    {/block}

Hoffe es hilft jemand :slight_smile: Danke für die Hilfe

super  Thumb-Up Smile