Template erweitern

Hi, ich möchte beim Checkout das RegistrierFormular erweitern. Unter der Passwort-Desciption im Reg-Formular soll etwas einfügen, also wäre es aus der
frontend/register/personal_fieldset.tpl der Block frontend_register_personal_fieldset_password_description

In meinem Plugin habe ich folgende Verzeichniss-Struktur:
Views/frontend/myextension/index.tpl
… in der index.tpl steht einfach nur

{block name='frontend_register_personal_fieldset_password_description'}
{$myvar}################
{/block}

in meiner Bootstrap habe ich den _ Enlight_Controller_Action_PreDispatch_Frontend_Checkout _ sibscribed:

public function onPreDispatchCheckout(Enlight_Event_EventArgs $arguments) {
       
        $subject = $arguments->getSubject();
        $request = $subject->Request();
        $response = $subject->Response();
        $action = $request->getActionName();
        $view = $subject->View();  	
	
	$view->addTemplateDir($this->Path() . 'Views/');	
	$view->extendsTemplate('frontend/plugins/myextension/index.tpl');	
	$view->assign('myvar', 'asdasdasdasdasdasdasd');	
}

 

Er will einfach nicht den Block ersetzen. Kann mich mal jemand in die richtige Richtung treten?

 

Lg

Hallo,

erst einmal hast du 2 gravierende Fehler/Sachen, die man bei Shopware 5 Plugins nicht mehr verwenden darf:

(1) extendsTemplate() soll wegen der Möglichkeit des Überschreibens der Plugin-Templatedateien nicht mehr verwendet werden

(2) die Plugin-Templatedateien werden genau dort abgespeichert, wo Sie sich im Theme befinden, ohne irgendeinen Zwischenordner wie “plugins/myextension” oder so.

 

Am besten du arbeitest erst einmal das hier durch, dann wären die Fehler auch nicht passiert: Developer Guides , speziell: Plugin quick Startup Guide .

 

Beste Grüße

Sebastian

hi,

ja das hatte ich bereits versucht, aber es hat nicht funktioniert. Also im Plugin die Verzeichniss-Struktur Views/frontend/register/personal_fieldset.tpl und in der Bootstrap

public function onPreDispatchCheckout(Enlight_Event_EventArgs $arguments) {
       
        $subject = $arguments->getSubject();
        $request = $subject->Request();
        $response = $subject->Response();
        $action = $request->getActionName();
        $view = $subject->View(); 
    
		
	//Add our plugin template directory to load our slogan extension.
	$view->addTemplateDir($this->Path() . 'Views/');	
	
	$view->assign('myvar', 'asdasdasdasdasdasdasd');
}

aber das macht er nicht :confused:

Hallo, 

das wäre aber zumindestens einmal der richtige Weg.

Wie sieht denn die dazugehörige Templatedatei aus? Steht da auch:

{extends file="parent:frontend/register/personal_field}

etc drin? Gibt es den Block in der Basis-Templatedatei überhaupt?

Beste Grüße

Sebastian

Schau mal hier hast du ein sehr einfaches Plugin, was das ganze etwas näher erleuchtern sollte:

https://github.com/hostianer/HostiConditions

Hi,

Habe mich nochmal durch die Beispiele durchgeackert, aber irgendwas ist faul… wenn ich mein vererbtes Template abschalte - also das standard Responsive verwende - wird dieses korrekt erweitert. Wenn ich mein vom Responsive vererbtes Template einschalte - hier liegt eine geringfügig abgeänderte register/personal_fieldset.tpl - klappt es nicht. Der BLock den ich überschreibe bzw erweitere (append) ist drin.

Hi kayyy,

leider funktioniert auch dein Beispiel nur dann, wenn im eigenen Template-Ordner die Datei welche ich überschreiben/erweitern will, nicht vorliegt.

@Mogly Meinst du, dass das Plugin vom Theme überschrieben wird? Komme nicht ganz dahinter wie du das genau meinst. Mit eigenem Template Ordner meinst du dein eigenes abgeleitetes Theme?

Genau, ich meine mein eigenes abgeleitetes Theme.
Es sieht so aus, als würde das eigene abgeleitete Theme das Plugin überschreiben.

@Mogly Schau mal hier: 

https://developers.shopware.com/designers-guide/smarty/#inheritance-and-plugin-templates

Das sollte dir weiter helfen  Wink

protected $injectBeforePlugins = true;

In deiner Theme.php sollte das Problem beheben. So werden die Plugins nach deinem Theme geladen und es sollte funktionieren.

Diese Änderung kam mit der Version 5.1.2, diese muss also installiert sein: SW-12782 - Add theme config property to configure inheritance position · shopware/shopware@163860e · GitHub

@kayy

super danke dir :slight_smile:

es lag an der 5.1.1 dass er die

$injectBeforePlugin

nicht schlucken wollte… jetzt läuft alles schick :slight_smile: … vielen dank! :wink: