Artikel für bestimmte Länder sperren

Thema wurde von guentherderx, 25. Mai 2015 erstellt.

  1. guentherderx

    guentherderx Erfahrener Benutzer

    Registriert seit:
    23. Januar 2013
    Beiträge:
    147
    Danke erhalten:
    6
    Danke vergeben:
    21
    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.
     
  2. Developer

    Developer Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    2.944
    Danke erhalten:
    629
    Danke vergeben:
    114
    Welche PHP Variable meinst Du?
     
  3. guentherderx

    guentherderx Erfahrener Benutzer

    Registriert seit:
    23. Januar 2013
    Beiträge:
    147
    Danke erhalten:
    6
    Danke vergeben:
    21
    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.
     
  4. Developer

    Developer Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    2.944
    Danke erhalten:
    629
    Danke vergeben:
    114
    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. :)
     
  5. guentherderx

    guentherderx Erfahrener Benutzer

    Registriert seit:
    23. Januar 2013
    Beiträge:
    147
    Danke erhalten:
    6
    Danke vergeben:
    21
    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"
     
  6. ralfschaefer

    ralfschaefer Mitglied

    Registriert seit:
    20. Juli 2011
    Beiträge:
    6
    Danke erhalten:
    1
    Danke vergeben:
    9
    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.