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?

1 „Gefällt mir“

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

1 „Gefällt mir“

@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: