Hallo, wie ich leider feststellen musste funktionieren die PHP-Tags seit Version 2.4 (fast) nicht mehr. Teilweise geht es noch, aber wenn man z.B. eine SMARTY-Variable assigned HTML: {assign var=test value=$ORDER_NUMBER} kann man sie im PHP nicht mehr abrufen HTML: {php} $order = $this->get_template_vars('test'); {/php} weil es sonst eine Fehlermeldung à la FATAL ERROR(1): "Using $this when not in object context" gibt. Nun haben wir es teilweise, zumindest in der product_listing und der product_info Datei geschafft unsere PHP Tags in eine externe Datei (xtc_get_products_stock.inc.php) auszulagern und das ergebnis dann per Smarty auf die Seite zu laden. Jetzt wäre meine Frage ob jemand eine PHP Datei kennt die tatsächlich auf allen Seiten eingebunden wird, eine globale Datei? Auf die Funktionen aus der xtc_get_products_stock.inc.php kann man nämlich nur aus den beiden oben genannten Dateien zugreifen, aber ich bruache eine Datei auf die ich von fast allen Shopseiten aus zugreifen kann um dort meine eigenen Funktionen abzurufen.
Hallo junichen, seit Smarty 3 funktioniert das mit den php-Tags ein bisschen anders als noch unter Smarty 2. Ein $this funktioniert an der Stelle da nicht mehr. Versuch mal folgendes: PHP: {php} $order = $this->get_template_vars('test'); {/php} umbauen zu: PHP: {php} $order = $template->get_template_vars('test'); {/php} LG Torben
Vor 20 Jahren wollte man auch von der Programmiersprache COBOL weg. Aber die erfreut sich immer noch guter Gesundheit.... Ich hasse es wenn Programmierer mir vorschreiben wollen, wie ich zu arbeiten habe. Ein beherztes {php} zur rechten Zeit spart vie Arbeit.
Ja das ist richtig die php-Tags sind laut Smarty-Entwickler deprecated. D.h. sie werden in Zukunft entfernt werden. Wann das passiert kann ich allerdings nicht sagen. Es ist schon richtig, dass ein php-Tag arbeit ersparen kann. Allerdings widerspricht dieser dem Gedanken, dass man PHP-Logik von Template trennt, um so eine bessere Wartbarkeit von PHP als auch Template zu erreichen. Dinge, die per php-Tag auseführt werden, können auch per Overload/Modifikation der PHP-Logik oder als ein Smarty-Plugin/Modifier erreicht werden. Das garantiert dann die Trennung von PHP-Logik und Template und sollte im Allgemeinen für eine bessere Wartbarkeit sorgen. LG Torben