Eigenes Plugin schreiben um .tpl Datei zu überschreiben

Hallo Zusammen,

Ich versuche mich gerade an meinem ersten kleinen Plugin, dazu habe ich eine Menge Tutorials gelesen und geschaut.

Es soll im Prinzip nur eine tpl angesprochen werden, aber irgendwie passiert rein garnichts, ich komme da nun einfach nicht weiter.

Der Code meiner Plugin.php sieht so aus:

 'onFrontendPostDispatchBlog'
        ];
    }
    public function onFrontendPostDispatchBlog(\Enlight_Controller_ActionEventArgs $args)
    {
        $this->container->get('template')->addTemplateDir(
        $this->getPath() . '/Resources/views/'
        );
    }
}

Die .tpl Datei liegt im Plugin unter: PBConsentbutton\Resources\views\frontend

 

Kann mir jemand weiter helfen ?

 

Beste Grüße

 

 

Moin @QuasiPasi‍,

wie genau  ist der Pfad zu deiner Template Datei?
Was ist der Inhalt?

Der Code, den du hier gezeigt hast, sieht erstmal so weit richtig aus.

Besten Gruß
Shopware  Patrick Stahl

Hallo Patrick,

dies ist der Pfad:

/custom/plugins/PBConsentbutton/Resources/views/frontend/_includes

der Inhalt ist diese Datei:

cookie_permission_note.tpl

{extends file="parent:frontend/_includes/cookie_permission_note.tpl"}

{namespace name="frontend/cookiepermission/index"}

{block name="cookie_permission_accept_button_fixed"}
     {if {config name="cookie_note_mode"} == 1}
          {if {config name="cookie_show_button"}}

               
               {s name="cookiePermission/configure"}{/s}
          
          {/if}

          
                    {s name="cookiePermission/acceptAll"}{/s}
               
     {else}
          
               {s name="cookiePermission/buttonText"}{/s}
          
     {/if}
{/block}

 

wenn ich die .tpl datei per FTP in das Theme setze, funktioniert Sie.

Dürfte das nicht sparsamer gehen? 

 'onFrontendPostDispatchBlog'
        ];
    }
    public function onFrontendPostDispatchBlog(\Enlight_Controller_ActionEventArgs $args)
    {
        $this->container->get('Template')->addTemplateDir(
        $this->getPath() . '/Resources/views'
        );
    }
}

habe es nicht getestet. nur ausm Kopf heraus

Ah ich sehe gerade, “dein” Code… hast dir ja sehr viel Mühe gegeben… https://forum.shopware.com/discussion/46738/plugin-templatedateien-einbinden

Nur für “.tpl” registriere ich mich eigentlich auf “Theme_Inheritance_Template_Directories_Collected”

public static function getSubscribedEvents()
{
    return [
        'Theme_Inheritance_Template_Directories_Collected' => 'onCollectTemplateDir',
        'Theme_Compiler_Collect_Plugin_Javascript' => 'onCollectJavascript',
        'Theme_Compiler_Collect_Plugin_Less' => 'onCollectLessFiles'
    ];
}

public function onCollectTemplateDir(\Enlight_Event_EventArgs $args) {
    $dirs = $args->getReturn();
    $dirs[] = $this->getPath() . '/Resources/views/';
    $args->setReturn($dirs);
}

Problem könnte sein, dass das “include” schon im Template-Cache liegt, ehe es später “nur” für den Blog abgerufen wird?
Also ist für eine Datei aus “include” ggf. das “spezielle Event” für Blog schon zu spät ?!?

2 „Gefällt mir“

@sonic schrieb:

Nur für „.tpl“ registriere ich mich eigentlich auf „Theme_Inheritance_Template_Directories_Collected“

public static function getSubscribedEvents()
{
return [
‚Theme_Inheritance_Template_Directories_Collected‘ => ‚onCollectTemplateDir‘,
‚Theme_Compiler_Collect_Plugin_Javascript‘ => ‚onCollectJavascript‘,
‚Theme_Compiler_Collect_Plugin_Less‘ => ‚onCollectLessFiles‘
];
}

public function onCollectTemplateDir(\Enlight_Event_EventArgs $args) {
$dirs = $args->getReturn();
$dirs = $this->getPath() . ‚/Resources/views/‘;
$args->setReturn($dirs);
}

Problem könnte sein, dass das „include“ schon im Template-Cache liegt, ehe es später „nur“ für den Blog abgerufen wird?
Also ist für eine Datei aus „include“ ggf. das „spezielle Event“ für Blog schon zu spät ?!?

 

vielen Dank, so geht es.

 

@brettvormkopp schrieb:

Ah ich sehe gerade, „dein“ Code… hast dir ja sehr viel Mühe gegeben… https://forum.shopware.com/discussion/46738/plugin-templatedateien-einbinden

Der Code könnte wirklich da her kommen.

Ich lese hier schon ein paar Jahre quer durchs Forum und kopiere mir alle möglichen Codes, diese speichere Ich dann in OneNote und versuch nach und nach dann alles mögliche über css, less und html verstehen und zu nutzen.