Naja, "auskennen" würde ich das noch nicht nennen. Super wäre noch, wenn Du mir sagen könntest, wie ich die PHP Variable in eine Smarty Variable bringe. Die offiziellen Smarty Tutorials bringen mich leider nicht weiter. Es klappt zwar auch so, aber mit einer richtigen Variable wäre es eleganter. Aktuell gebe ich ja einfach nur das Ergebnis der Funktion aus. Besse wäre, wenn ich eine Variable hätte. Ich will Deine Hilfe aber auch nicht überstrapazieren. Bin schon so sehr zufrieden.
Die, die ich anlegen würde. Also in diesem Block: PHP: function smarty_function_geoblock($params, &$smarty) { require_once("/www/htdocs/w011d024/templates/EyeCandy/geoip.inc.php"); $gi = geoip_open("/www/htdocs/w011d024/templates/EyeCandy/GeoIP.dat",GEOIP_STANDARD); $country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']); geoip_close($gi); if (in_array($country_code, array('AR','AG'...), true)){ echo "geoblock"; } } wäre statt des echo die Übergabe einer Variablen schöner: $GEOBLOCK = 1 o.ä.. Wenn die in den Templates nutzbar wäre, könnte man damit besser arbeiten. Ich werde aus der Doku nicht ganz schlau: PHP: <?php $smarty = new Smarty; $smarty->assign('vorname', 'Andreas'); $smarty->display('index.tpl'); ?> Das funktioniert nicht. Mir ist allerdings auch nicht klar, wie ich das Template korrekt zuweise. Das interessiert mich ganz prinzipiell, weil die Erweiterung mit Plugins schon eine feine Sache ist. Da wäre es gut, wenn die Variablen optimalerweise global wären.
Moin Günther, um bei meinem Beispiel und Deiner Funktion zu bleiben. Wenn ich das richtig Verstanden haben, so wie Du es oben geschrieben hast, dann möchtest Du beim Matching die 1 zur Verfügung stellen? PHP: $this->set_content_data('GEOBLOCK', '1'); und im Template kannst Du es dann mit {$GEOBLOCK} abfangen.
Hallo, das funzt noch nicht richtig. Wenn ich die Funktion erweitere, passiert noch nichts: PHP: function smarty_function_geoblock($params, &$smarty) { require_once("/www/htdocs/w011d024/templates/EyeCandy/geoip.inc.php"); $gi = geoip_open("/www/htdocs/w011d024/templates/EyeCandy/GeoIP.dat",GEOIP_STANDARD); $country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']); geoip_close($gi); if (in_array($country_code, array('AR','AG'...), true)) { $this->set_content_data('GEOBLOCK', '1'); echo "geoblock"; } } Sobald ich die Variable jedoch im Template aufrufe, wirft es einen PHP Fehler: PHP: FATAL ERROR(1): "Using $this when not in object context"
Hallo zusammen, wir haben heute einen Lieferstopp eines Herstellers bekommen, da wir unerlaubt in gewisse Länder verkauft haben. Bei den Ländern geht es hauptächlich um non-eu Länder Schweiz, USA... Weiß jemand von euch, wie wir diese Länder bei diesem Hersteller sperren können? Leider ist das unser wichtigster Hersteller/ Lieferant. Über einen Tipp würde ich mich riesig freuen, da ich hier schnell handeln muss.