Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
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: ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb

    rKREATIV

    • Neu im Forum
    • Beiträge: 7
    Hallo Community,

    aus Gründen der Effizienz und der Logistik möchte mein Kunde bei jeder Bestellung die folgenden Bedingungen berücksichtigt wissen:

    1. Mindestbestellwert (z.B. 100,- Euro) UND
    2. Maximale Anzahl der Positionen im Warenkorb (z.B. 5)

    Jede Bestellung soll also unter Einhaltung des Mindestbestellwerts von 100,- Euro aus maximal 5 unterschiedlichen Artikeln (mit jeweils beliebiger Stückzahl) bestehen dürfen. Möchte der Käufer mehr als 5 unterschiedliche Artikel bestellen, muss er also eine zweite Bestellung (wieder mit Mindestbestellwert) auslösen.

    Der Mindestbestellwert ist kein Problem. Meine Frage bezieht sich eher auf den zweiten Punkt. Gibt es dafür eine Lösung?

    Habe schon 'ne Menge gestöbert und gegoogelt und bin zu keinem sinnvollen Ergebnis gekommen. Ich würde mich freuen, wenn Ihr mir hierbei helfen könntet. Alle Lösungen sind äußerst willkommen (Konfiguration, Module, Code...)

    Vielen Dank vorab.
    Thomas

    [EDIT Tomcraft 06.03.2011: Hier geht es direkt zur Anleitung von franky_n.]

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

    franky_n

    • Experte
    • Beiträge: 4.950
    ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb
    Antwort #1 am: 03. November 2010, 23:57:30
    Hallo rKreativ,

    sollte so ungefähr funktionieren:
    /includes/classes/shopping_cart.php in Z. 122 nach:

    Code: PHP  [Auswählen]
                    if ($this->in_cart($products_id)) {
                            $this->update_quantity($products_id, $qty, $attributes);
                    } else {

    das einfügen:

    Code: PHP  [Auswählen]
        if ($this->count_products() <6) {

    Dann in Z.138 nach:

    Code: PHP  [Auswählen]
                                            if (isset ($_SESSION['customer_id']))
                                                    xtc_db_query("insert into ".TABLE_CUSTOMERS_BASKET_ATTRIBUTES." (customers_id, products_id, products_options_id, products_options_value_id) values ('".$_SESSION['customer_id']."', '".$products_id."', '".$option."', '".$value."')");
                                    }
                            }

    das einfügen:

    Code: PHP  [Auswählen]
        }

    Dann vor dem letzten } in der Datei das einfügen:

    Code: PHP  [Auswählen]
    function count_products() { // get total number of products
      $total_products = 0;
      if (is_array($this->contents)) {
        reset($this->contents);
        while (list ($products_id,) = each($this->contents)) {
          $qty = $this->contents[$products_id]['qty'];
          if ($qty>= 1) {
            $total_products++;
          }
        }
      }
      return $total_products;
    }

    Das sollte reichen um max 5 Produkte einzufügen unabhängig von der Anzahl. :)

    Viele Grüße

    Franky

    [EDIT Tomcraft 06.03.2011: Anleitung aktualisiert.]

    rKREATIV

    • Neu im Forum
    • Beiträge: 7
    ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb
    Antwort #2 am: 04. November 2010, 00:42:40
    Hallo Franky,

    vielen Dank für die superschnelle Hilfe. Das trifft die Sache auf den Kopf.

    Allerdings funktioniert es nur sporadisch.

    Beim ersten Versuch habe ich es geschafft, fünf Positionen im Warenkorb abzulegen (wobei zwischenzeitlich zwei Artikel nicht akzeptiert oder im Warenkorb dargestellt wurden), seit dem schluckt mein Warenkorb maximal 3 Positionen...dann ist Schluss. Jeder Versuch, weitere Artikel abzulegen scheitert.

    Hast Du dazu vielleicht noch eine Idee?

    Danke und Gruß
    Thomas

    franky_n

    • Experte
    • Beiträge: 4.950
    ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb
    Antwort #3 am: 04. November 2010, 09:01:55
    Hallo rKREATIV,

    er scheint nur falsch zu zählen. Ersetze mal die obige Funktion durch das hier:

    Code: PHP  [Auswählen]
      function count_products() { // get total number of products
        $total_products = 0;
        if (is_array($this->contents)) {
          reset($this->contents);
          while (list ($products_id,) = each($this->contents)) {
            $qty = $this->contents[$products_id]['qty'];
            if ($qty>= 1) {
              $total_products++;
            }
          }
        }
        return $total_products;
      }
     
    Viele Grüße

    Franky

    [EDIT Tomcraft 06.03.2011: Code in Anleitung aktualisiert.]

    rKREATIV

    • Neu im Forum
    • Beiträge: 7
    ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb
    Antwort #4 am: 04. November 2010, 12:07:25
    Hallo Franky,

    that's it! Vielen, herzlichen Dank. Die einzige Änderung, die ich noch vorgenommen habe, ist, die Bedingung in

    Code: PHP  [Auswählen]
     if ($this->count_products() <6) {

    auf "<5" zu setzen, da das Limit bei sechs Positionen im Warenkorb lag. Bin mir nicht sicher, ob das von der Programmlogik her der richtige Weg war, aber er zeigt zumindest die richtige Wirkung.

    Also, tausend Dank nochmal für die schnelle Unterstützung.

    Gruß
    Thomas

    Pictureclass

    • Neu im Forum
    • Beiträge: 4
    Re: ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb
    Antwort #5 am: 16. Januar 2013, 18:29:52
    Funktioniert auch nach über 2 Jahre noch. Vielen Dank Franky

    downset

    • Mitglied
    • Beiträge: 174
    Re: ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb
    Antwort #6 am: 17. Oktober 2013, 23:31:29
    Bei mir soll nur ein Artikel bestellbar sein. Dafür wäre es schön, wenn immer der letzte Artikel, der "gekauft" wird in den Warenkorb gelegt wird.

    Also mal angenommen ich suche mir erst Artikel A aus und lege ihn in den Warenkorb, entscheide mich dann aber doch für B und wähle diesen ebenfalls.

    Artikel A soll dann rausfliegen und B soll in den Warenkorb gelegt werden.

    Mit 1.5 funtionierte dass nach dieser Anleitung. Bei 1.6 aber leider nicht.

    jemand ne idee?

    Liebe Güße

    jens

    Peter33

    • Fördermitglied
    • Beiträge: 44
    Re: ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb
    Antwort #7 am: 09. September 2014, 22:25:31
    für 1.06 müsste man folgendes machen:

    /includes/classes/shopping_cart.php nach:

    Code: PHP  [Auswählen]
        if ($this->in_cart($products_id)) {
          $this->update_quantity($products_id, $qty, $attributes);
        } else {

    das einfügen (wenn man z.B. nur 2 Artikelpositionen zulassen will):

    Code: PHP  [Auswählen]
    if ($this->count_products() <2) {

    Dann nach:

    Code: PHP  [Auswählen]
    // insert into database
              if (isset ($_SESSION['customer_id'])) {
                $sql_data_array = array('customers_id' => (int)$_SESSION['customer_id'],
                                        'products_id' => $products_id,
                                        'products_options_id' => (int)$option,
                                        'products_options_value_id' => (int)$value
                                       );
                xtc_db_perform(TABLE_CUSTOMERS_BASKET_ATTRIBUTES, $sql_data_array);
              }
             }
           }

    das einfügen:

    Code: PHP  [Auswählen]
    }

    Dann vor dem letzten } in der Datei das einfügen:

    Code: PHP  [Auswählen]
        function count_products() { // get total number of products
          $total_products = 0;
          if (is_array($this->contents)) {
            reset($this->contents);
            while (list ($products_id,) = each($this->contents)) {
              $qty = $this->contents[$products_id]['qty'];
              if ($qty>= 1) {
                $total_products++;
              }
            }
          }
          return $total_products;
        }

    So funktioniert es zumindest bei mir.

    Gruß
    Peter

    leon43

    • Neu im Forum
    • Beiträge: 1
    Re: ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb
    Antwort #8 am: 26. August 2019, 21:52:13
    Hallo zusammen,

    Wie sieht es aus in der neue Version 2.0.4.2?
    Hat sich da was geändert in der shopping_cart.php?

    MfG Leon

    downset

    • Mitglied
    • Beiträge: 174
    Re: ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb
    Antwort #9 am: 13. Februar 2020, 15:05:31
    Zur Info:

    Die letzte Methode funktioniert auch mit der modified eCommerce Shopssoftware v2.0.5.0 rev 12487

    Beim Einbau musst Du nur etwas "mitdenken" , da der Code geringfügig anders aussieht, an dem du dich in der shopping_cart.php orientieren musst.

    Gruß

    Jens

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 10.427
    • Geschlecht:
    Re: ANLEITUNG: Maximale Anzahl von Positionen im Warenkorb
    Antwort #10 am: 18. Februar 2020, 11:53:35
    Ohne die Erweiterung selbst geprüft zu haben oder auch untersucht zu haben ob man das nicht auch update-sicher machen könnte,
    auf jeden Fall das
    Code: PHP  [Auswählen]
    while (list ($products_id,) = each($this->contents)) {

    hiermit ersetzen damit du PHP 7.2-kompatibel bist und das auch für zukünftige PHP-Versionen bleibst.
    Code: PHP  [Auswählen]
    foreach($this->contents as $products_id => $val_arr) {

    Gruß,
    noRiddle
    6 Antworten
    2248 Aufrufe
    01. April 2014, 22:33:23 von ado
    10 Antworten
    2281 Aufrufe
    24. Oktober 2010, 10:53:18 von mj-buero
    3 Antworten
    2043 Aufrufe
    25. Oktober 2012, 16:05:36 von berlin.matthias
    3 Antworten
    2900 Aufrufe
    01. Februar 2011, 08:51:42 von arroweb