ich möchte aus einem Template heraus eine Funktion aufrufen, die Funktion ist in einer php Datei und soll einen DB Eintrag vornehmen. Nun sind meine Smarty Kenntnisse gleich NULL, ergo kein Plan.
PHP ist soweit kein Problem, der Funktion soll nichts übergeben werden, sie soll lediglich angestossen werden, wenn das Template aufgerufen wird.
Wie mach ich das? Ist in der PHP Datei etwas zu beachten und muss diese includiert werden?
ich möchte aus einem Template heraus eine Funktion aufrufen, die Funktion ist in einer php Datei und soll einen DB Eintrag vornehmen. Nun sind meine Smarty Kenntnisse gleich NULL, ergo kein Plan.
PHP ist soweit kein Problem, der Funktion soll nichts übergeben werden, sie soll lediglich angestossen werden, wenn das Template aufgerufen wird.
Wie mach ich das? Ist in der PHP Datei etwas zu beachten und muss diese includiert werden?
Grüße aus Berlin[/QUOTE]
Das ist kein Problem… In Smarty kann man mit [{php}]…php-code… [{/php}] PHP-Code einbinden, also auch eine PHP-Funktion "include"n und aufrufen.
Also ich würde das wenn überhaupt mit nem modul lösen und nicht irgendwo im template. OXID hat ja ein MVC Modell und so ein kleines Modul ist schnell geschrieben und du sparst dir unnötige templatearbeit bei Updates und dein Shop bleibt schön wartbar. (wenn du das template nicht schon sowieso angepasst hast)
Danke euch beiden für die Antworten, ich werde jedoch avenger´s Lösung bevorzugen, hat einfach den Hintergund, dass genau dieses tpl für den Funktionsaufruf benötigt wird. Das hier Modular zu lösen macht nicht wirklich Sinn.
kann mich csimon nur anschließen: über ein Modul lösen. Aber php-Code im Template grrr, gibt es nicht aus diesem Grund eine Template-Engine wie Smarty?
Denke aber der Weg über ein Smarty-Plugin ist ein gut vertretbarer Mittelweg. Mit einem Plugin hast du nur einen Aufruf im Template und die Arbeit in der DB wird nicht direkt im Templat durchgeführt.
Im Order “core/smarty/plugins/” gibt es eine ganze Menge Beispiele.
Und csimon hat ein Shop-Update angesprochen, da ist im Template so etwas schnell mal überschrieben. Daher dies lieber in ein Modul oder Plugin ausgelagert.
Nein, nein um Gottes willen, ich will auf keinen Fall DB Code o.ä. im Template haben sondern lediglich die Funktion aufrufen. Wobei die Variante mit den Plugins, ist doch nichts anderes, nen Haufen php Dateien mit div. Funktionen, die Frage wie rufe ich denn so eine function im tpl auf?
[QUOTE=itnic;52781]Danke euch beiden für die Antworten, ich werde jedoch avenger´s Lösung bevorzugen, hat einfach den Hintergund, dass genau dieses tpl für den Funktionsaufruf benötigt wird. Das hier Modular zu lösen macht nicht wirklich Sinn.
Grüße aus Berlin[/QUOTE]
Und man stirbt schnell an Modularitis…
Dein Template gehört Dir, und bei einem Update passiert da gar nix, weil der schlaue OXIDler sein Basistemplate natürlich anders als “basic” nennt, und solche Änderungen sowieso in das “Custom”-Template gehören.
Es gibt ja Leute die zum Joggen 'ne Bleiweste und Gewichte an Armen und Beinen tragen, weil das sonst zu einfach ist.
Ich gehöre definitiv nicht zu dieser Gruppe, sondern fröne dem KISS-Prinzip (“Keep it simple and stupid”)
Und vor die Wahl gestellt, eine Abkürzung zu nehmen, oder, politisch korrekt, 10 KM mehr zu laufen, wähle ich natürlich die Abkürzung…
Lass Dich da nicht irre machen, Du tust nix Böses oder Verbotenes, wenn Du einen winzig kleinen PHP-Aufruf in das Template packst.
Wirst aber sicher weniger Probleme haben, als mit noch einem Modul…
[QUOTE=avenger;52787]…lass Dich da nicht irre machen, Du tust nix Böses oder Verbotenes, wenn Du einen winzig kleinen PHP-Aufruf in das Template packst.
Wirst aber sicher weniger Probleme haben, als mit noch einem Modul…[/QUOTE]
Naja, Module haben schon Vorteile und dauern nur wenige Minuten länger :rolleyes:. Aber solange es übersichtlich bleibt, ist auch gegen den Einschub von php nichts einzuwenden.