ddgFriend Posted June 30, 2011 Report Share Posted June 30, 2011 Hallo, ich möchte mit Smarty feststellen ob eine Datei existiert. Wenn Ja, soll er sie via "include" importieren Wenn Nein, soll eine Defaultausgabe ausgegeben werden. Als erstes setze ich eine Variable. {assign var="specialmsg" value="/plugins/auto_cross_sell/auto_cross_sell.html"} Diese Abfrage habe ich im Internet gefunden {if file_exists($specialmsg)}[/code] Alternative: [code]{if $specialmsg|file_exists}[/code] Keiner der Beiden Abfragen funktioniert --> Es wird immer der else-Zweig ausgegeben Die Datei sollte hier inkludiert werden. Wenn ich diese Zeile ohne if-Abfrage ausführe wird die Datei problemlos inkludiert. [code]{include file=$specialmsg type="tpl_include"}[/code] [code] {else} <hier der else-Zweig> {/if} [/code] Der "else"-Zweig ist die Default ausgabe --> das ist der Standardcode vom Plugin "xt_auto_cross_sell" Der Zweck: ich habe ein eigenes Template erstellt in dem ich völlig andere Bildgrößen verwende. Klarerweise habe auch eigene Templates wo die Bilder hineinpassen. Allerdings hat jedes Plugin nur 1 HTML-Template das für alle Shop-Templates gilt. Nun habe ich eine Spezielles Plugin-Template geschrieben das ich in plugin-Ordner meines Templates gespichert habe. Dieses möchte ich inkludieren wenn es existiert. Wenn nicht soll er die Standardausgabe des Plugins verwenden. Hier nochmal der ganze Code: [code] {assign var="specialmsg" value="/plugins/auto_cross_sell/auto_cross_sell.html"} {if file_exists($specialmsg)} {include file=$specialmsg type="tpl_include"} {else} <hier der else-Zweig> {/if} [/code] Link to comment Share on other sites More sharing options...
ddgFriend Posted July 1, 2011 Author Report Share Posted July 1, 2011 Sry fürs pushen des Threads. Problem ist noch immer nicht gelöst, allerdings hier ein Workaround: Zuweisen der Template-Datei in eine Variable {assign var="specialmsg" value="../`$selected_template`/plugins/box_bestseller_products/box_bestseller_products.html"} Via Capture wird die gesamte Ausgabe des Templates (falls vorhanden) in die Variable "templateloaded" geschrieben {capture name='templateloaded'} {include file=$specialmsg type="tpl_include"} {/capture} [/code] Wenn die Variable NICHT leer ist, dann existiert Template --> Ausgabe der Variable [code] {if $smarty.capture.templateloaded ne ''} {$smarty.capture.templateloaded} {else} <else-Zweig> {/if} [/code] NACHTRAG: Hinzufügen von "../`$selected_template`" in die Variable "specialmsg" Link to comment Share on other sites More sharing options...
oldbear Posted July 1, 2011 Report Share Posted July 1, 2011 hi, was soll das Ganze eigentlich ? Normalerweise wird auto-cross-sell über den Hook "product_info_tpl" ausgegeben -> richtiges Vorgehen wäre, den Hook umzubennenen und an der richtigen Stelle zu plazieren ( siehe auch diverse Threads zum Thema Master/Slave ). Das mit den Templates stimmt so nicht: in den Templates gibt es einen Plugin-Ordner, in den man pro Plugin eigene Templates hinterlegen kann ( mit der gleichen Ordnerstruktur wie im Plugin selber, halt dann ohne classes, pages, installer etc. pp. ) Dann ist Deine mühsame Abfrage hinfällig .... Grüsse Link to comment Share on other sites More sharing options...
ddgFriend Posted July 1, 2011 Author Report Share Posted July 1, 2011 Hi hi, was soll das Ganze eigentlich ? Normalerweise wird auto-cross-sell über den Hook "product_info_tpl" ausgegeben -> richtiges Vorgehen wäre, den Hook umzubennenen und an der richtigen Stelle zu plazieren ( siehe auch diverse Threads zum Thema Master/Slave ). Danke für den Hinweis, aber mir gehts nicht um die Position eines Plugins, und auch nicht speziell um das "auto-cross-sell"-Plugin. Das habe ich nur als Beispiel genommen Das mit den Templates stimmt so nicht: in den Templates gibt es einen Plugin-Ordner, in den man pro Plugin eigene Templates hinterlegen kann ( mit der gleichen Ordnerstruktur wie im Plugin selber, halt dann ohne classes, pages, installer etc. pp. ) Dann ist Deine mühsame Abfrage hinfällig .... Grüsse Hier gebe ich dir klarerweise recht ... man kann ja erst etwas wissen wenn man es gelernt hat. Vielen Dank dafür. Nun gleich eine Frage: /shop/plugins/xt_bestseller_products/templates/boxes/box_xt_bestseller_products.html /shop/templates/nf_v1/plugins/xt_bestseller_products/templates/boxes/box_xt_bestseller_products.html Wie du hier (hoffentlich) erkennen kannst habe ich nun das Template für das Plugin (inkl Ordnerstruktur) in mein Template erstellt. Allerdings wird im FE noch immer das Template vom Plugin geladen und nicht mein Template. Muss ich noch Einstellungen ändern? Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.