Werbung / Banner buchen
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Versandart nur anzeigen wenn bestimmte Artikel im Warenkorb

    Angeal

    • Fördermitglied
    • Beiträge: 411
    • Geschlecht:
    Hallo,
    ich möchte ein Versandmodul nur anzeigen lassen wenn eine oder mehrere bestimmte Artikel-IDs im Warenkorb sind.

    Ich sehe, das im Versandmodul folgende Variablen ganz am Anfangen hinzugezogen werden
    Code: PHP  [Auswählen]
    global $order, $cart, $shipping_weight;

    Ich habe bereits eine Gewichtsgrenze eingeführt ab welcher das Modul eingeblendet werden soll.
    Code: PHP  [Auswählen]
    if ( $shipping_weight < 31.5 ){
            $this->enabled = false;
            return $this->enabled;
            }

    Wie bekomme ich es hin die Artikel-ID aus $cart oder $order anzulesen und hier auf das auftreten einer oder mehrerer IDs zu prüfen.

    quasi so, oder so ähnlich

    Code: PHP  [Auswählen]
    if ($cart->id != 123 OR 456 OR 789) {
            $this->enabled = false;
            return $this->enabled;
            }

    Hintergrund ist, das Kunden häufig (aus versehen oder absichtlich) die falsche Versandart wählen. Daher möchte ich bestimmte Versandarten erst gar nicht einblenden bzw. erst einblenden wenn bestimmte Voraussetzungen geschaffen sind.

    Ich weiß, das ganze über die ID fest zu machen ist etwas dirty, aber sind nicht so viele Artikel. Da ist der Pflegeaufwand überschaubar.

    Vielleicht kann mir ja wer einen Anreiz geben.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=37426.0

    web28

    • modified Team
    • Beiträge: 9.404
    Im $order Objekt ist alles was Du benötigst enthalten.

    Code: PHP  [Auswählen]
    foreach ($order->products as $value) {
      $pID = xtc_get_prid($value['id']); //Artikel ID
    }

    Gruss Web28

    Angeal

    • Fördermitglied
    • Beiträge: 411
    • Geschlecht:
    Danke, funktioniert  :-B

    Gibt es eigentlich irgendwo eine Übersicht was genau in den Variablen enthalten ist?

    web28

    • modified Team
    • Beiträge: 9.404
    Nein, man kann sich das aber einfach ausgeben lassen, Bsp. für das $order Objekt:
    Code: PHP  [Auswählen]
    echo '<pre>'. print_r($order,1).'</pre>';
    Damit wird alles schön formatiert angezeigt, das funktioniert mit jedem Obekt oder Array.

    Und dann muss man noch wissen was man mir den Infos anfangen kann. Das kann man sich aber an den unterschiedlichsten Stellen im Quellcode der Shopdateien abschauen.

    Gruss Web28

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.027
    • Geschlecht:
    @Angeal
    Ich nehme an du hast ein spezielles Versandmodul oder eines welches du dir kopiert und umbenannt hast.
    Ich würde an deiner Stelle also die Werte nicht hard-codiert in die Klasse schreiben sondern Konfigurationsfelder dafür anlegen, dann kannst du's im Modul einstellen.

    Für die Artikel-IDs machst du ein einfaches Input-Feld wo du die IDs komma-separiert einträgst und im Skript dann mittels z.B.
    Code: PHP  [Auswählen]
    function shall_disable() {
        $mein_id_array = explode(',', DEIN_KONFIGURATIONS_FELD); //ergibt ein Array mit den Artikel-IDs
        $id_arr = array_keys($_SESSION['cart']->contents); //ergibt ein Array mit allen IDs im Warenkorb
        foreach($id_arr as $id) {
            if(in_array($id, $mein_id_array) {
                return false;
            }
        }
       
        return true;
    }
    if($this->shall_disable() === false) $this->enabled = false;
     

    Nicht getestet !

    Gruß,
    noRiddle
    2 Antworten
    3229 Aufrufe
    22. November 2012, 16:37:39 von je_web
    6 Antworten
    4188 Aufrufe
    28. September 2012, 16:59:05 von Godzilla
    0 Antworten
    1534 Aufrufe
    22. September 2016, 15:35:15 von tkramer
               
    anything