Jump to content
xt:Commerce Community Forum

(file_exists) Feststellen ob Datei existiert


ddgFriend

Recommended Posts

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

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

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

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

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...