[4.10.6/Erledigt] Anderen Modulen beibringen, dass ihre Smarty-Blöcke auch in meinem Modul zu finden sind


#1

Hallo zusammen,

ich schreibe gerade ein Modul, in welchem ich das Template /application/views/flow/tpl/page/details/inc/productmain.tpl kopiert und umbenannt habe. In diesem Template gibt es nun Blöcke die von anderen Modulen nicht mehr gefunden werden.

Das Modul ifabrik_energy_label z.B. hat folgenden Eintrag:

'blocks' => array(
    array('template' => 'page/details/inc/productmain.tpl', 'block'=>'details_productmain_energylabel', 'file'=> '/views/blocks/details_productmain_deliverytime.tpl'),

Wie kann ich diesem Modul bzw. allen Modulen beibringen, dass sich der Block details_productmain_energylabel, nun auch in meinem Modul befindet?


#2

Was ist denn mit dem kopierten und umbenannten productmain.tpl passiert?
Wird es statt original productmain.tpl benutzt, so dass im übergeordneten Template jetzt

[{include file="page/product/inc/productmain_kopiert_und_umbenannt.tpl"}] 

statt dem alten

[{include file="page/product/inc/productmain.tpl"}] 

drin steht?
Dann kann es natürlich nicht mehr funktionieren, weil productmain.tpl gar nicht mehr benutzt wird, die andere Module aber eben nur mit dieser funktionieren.
Die sauberste Lösung wäre die Originaldatei durch die umbenannte Kopie komplett zu ersetzen, damit der Dateiname erhalten bleibt.


#3

Die Originaldatei wird weiter so benutzt wie bisher.

Die kopierte Datei liegt nun in meinem Modul-Verzeichnis “meinmodul/views/hotspots.tpl” und ich habe einiges von den Codes entfernt. Die Datei wird von einem Controller aus aufgerufen und soll einfach als eine simple Produktdetail-Vorschau dienen. Ich lade den Controller mit Ajax, die beiden Templates haben also nichts mehr mit einander zu tun.

Ich hoffe einfach dass es etwas gibt mit dem ich sowas schreiben kann:

array(‘template’ => ‘meinmodul/views/hotspots.tpl’, ‘block’=>‘details_productmain_energylabel’, ‘file’=> ‘Modulverzeichnis-Des-Anderen-Modules/views/blocks/details_productmain_deliverytime.tpl’)

Edit: Ich würde gerne Vermeiden, Templates in das /application/views… Verzeichnis zu legen.


#4

Wenn das original productmain.tpl Template weiterhin vom Shop geladen wird, dann müssten die Module funktionieren.
Die einzige Ursache, warum das nicht so sein könnte, wäre eine komplette Überschreibung eines der ersten Blocks im Template, und zwar mit einem Code ohne eigener TPL-Blocks.

Oder möchtest Du, dass die Module mit Blocks für productmain.tpl auch mit Deinem hotspots.tpl funktionieren?
Ich bin mir gerade nicht mehr so sicher, was genau angestrebt wird und was nicht klappt.


#5

Zweiteres, ich möchte dass die Blocks in meinem Modul-Template ebenfalls funktionieren. Das Energylabel-Modul kann ja nicht wissen, dass der Block auch in meinem Modul vorkommt.

Hotspot.tpl funktioniert völlig losgelöst von productmain.tpl.

Meinmodul > application > views > hotspot.tpl (Hier bleiben die Blocks leer)

Auszug aus meiner Metadata:

'templates' => array(
    'hotspot.tpl' => 'Meinmodul/application/views/hotspot.tpl',

Unter Blocks würde ich sowas schreiben:

'blocks' => array(
    array('template' => 'application/views/hotspot.tpl', 'block'=>'details_productmain_energylabel', 'file'=> '../ifabrik/ifabrik_energy_label/views/blocks/details_productmain_deliverytime.tpl'),

#6

okay, also unter dem Strich möchtest Du in deinem Modul zusätzliche Blöcke für fremdes Modul hinzufügen.
als erstes hätte ich tatsächlich

'file'=> '../ifabrik/ifabrik_energy_label/views/blocks/details_productmain_deliverytime.tpl'

ausprobiert, und als zweites das selbe nur mit absolutem Pfad:

'file'=> '/../ifabrik/ifabrik_energy_label/views/blocks/details_productmain_deliverytime.tpl'

und sonst würde ich den Code von anderen Modulen einfach in dein Template fest übernehmen.


#7

Funktioniert leider beides nicht. Ich includiere dann eben dass Template und hoffe dass ich keine weitere Logik mehr brauche ^^


#8

Es ist eine merkwürdige Herangehensweise. Versuch mal ne Blockerweiterung eines bestehenden Blocks und füge hier die neuen Blocks ein.


#9

Danke, ich denke aber dass es für jetzt leichter ist, die Templates aus den anderen Modulen zu includen.