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: Artikel von extern mit Artikelnummer an Warenkorb übergeben

    Soeldner

    • Fördermitglied
    • Beiträge: 204
    • Geschlecht:
    Hi in die Runde,

    wie stelle ich es an das Artikel von einer externen Seite (post) mittels der Artikelnummer an meinen Warenkorb übergeben werden? Hintergrund ist die Idee auf externen Webseiten Artikel bereitzustellen die man direkt in den Warenkorb werfen kann.

    Via shopping_cart.php&.. ?

    Es werden mit dem Link auch weitere Parameter übergeben

    Code: PHP  [Auswählen]
    artnr={Art.Nr}&qt={Anzahl}&pr={Preis}&br={Hersteller}

    Ist das so Umsetzbar bzw. was kann man davon abgreifen? Die Artikel sind in modified vorhanden.

    VG D.

    EDIT: Shopversion vergessen, 1.06 r4642 SP4

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

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Du könntest auf deiner Seite zu jedem Produkt so etwas einbauen

    Code: XML  [Auswählen]
    <form action="http://onlineshop.tld/index.php?action=add_a_quickie" method="post" target="_blank">
            <input type="hidden" value="1245" name="quickie">
            <input type="submit" value="In den Korb legen">
    </form>
     

    damit nutzt du dann die Schnellkauf-Funktion des Shops und müsstest am Code im Shop nichts ändern.
    Beim input type="hidden" kommt bei value einfach die Artikelnummer des entsprechenden Produkts rein.

    Zu klären wäre allerdings noch die Frage, ob es rechtlich zulässig ist auf diese weise ein Produkt in den Warenkorb eines Shops zu legen und wenn ja welche Bedingungen erfüllt sein müssen.

    PS:
    Denkbar wäre auch eine Variante mit Links und Parametern, dazu müsste man dann aber im Shop den Code in der 'includes/cart_actions.php' anpassen.
    Beispiel:
    Code: XML  [Auswählen]
    <a href="http://onlineshop/index.php?action=add_a_quickie&amp;quickie=1245" target="_blank">In den Korb legen</a>
     

    Gruss
    Hanspeter

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Nachtrag:

    Wenn du die Variante mit den Links umsetzen möchtest, könnte die nötige Anpassung in der 'cart_actions.php' z.B. so aussehen.

    In 'includes/cart_actions.php' ca. Zeile 128 nach folgendem Code

    Code: PHP  [Auswählen]
        // customer wants to add a quickie to the cart (called from a box)
        case 'add_a_quickie' :
     

    diesen Code einfügen

    Code: PHP  [Auswählen]
          if (!empty($_GET['quickie']) && empty($_POST['quickie'])) $_POST['quickie'] = $_GET['quickie'];
     

    Gruss
    Hanspeter

    Soeldner

    • Fördermitglied
    • Beiträge: 204
    • Geschlecht:
    Danke für die schnelle Antwort!

    Variante 1 wird denke ich nicht umsetzbar sein. Die Explosionszeichnungen für Ersatzteile gibt es schon. Denke nicht das man daran was drehen kann. Variante 2 ist denke ich mal wahrscheinlicher.

    Die externe Seite kann den Link beeinflussen, und die Methode (post, get oder ajax). Was müsste denn an dem case 'add_a_quickie' angepasst werden?

    Variabeln die von der externen Seite übergeben werden sind ArtNr, Anzahl, Beschreibung, Preis. Wobei ich theoretisch nur die ArtNr und die Menge abgreife. Aktuell wird ja bei einer Schnellbestellung nur um 1 erhöht.

    Code: PHP  [Auswählen]
    $_SESSION['cart']->add_cart($quickie['products_id'], $act_qty +1, 1);

    Da müsste ich im Link die Variable abgreifen und an dieser Stelle erhöhen. Natürlich wieder mit einer Abfrage weil im Shop keine Menge mitgegeben wird im Bereich Schnellkauf.

    Danke für den rechtlichen Hinweis. Dieser wurde schon berücksichtigt. Ausführliche Beschreibung ist zB auf beiden Plattformen vorhanden.

    EDIT: Gleichzeitig geantwortet :) Danke :)

    Soeldner

    • Fördermitglied
    • Beiträge: 204
    • Geschlecht:
    OK

    Code: PHP  [Auswählen]
    index.php?action=add_a_quickie&quickie={artnr}

    funktioniert schon mal. Fehlt mir nur noch die Abfrage der Menge.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Dann schlage ich vor in der 'includes/cart_actions.php' vor

    Code: PHP  [Auswählen]
        // customer wants to add a quickie to the cart (called from a box)
        case 'add_a_quickie' :
     

     diesen zusätzlichen Case einzufügen

    Code: PHP  [Auswählen]
        // customer wants to add a quickie to the cart (called from a external site)
        case 'add_a_quickie_from_external' :
          $qty = !empty($_GET['quantity']) ? (int)$_GET['quantity'] : 1;
          $quicky = xtc_db_prepare_input($_GET['quickie']);
          if (GROUP_CHECK == 'true') {
            $group_check = "and group_permission_" . $_SESSION['customers_status']['customers_status_id'] . "=1 ";
          }
          $quickie_query = xtc_db_query("select products_fsk18,
                                                products_id
                                          from "
    . TABLE_PRODUCTS . "
                                         where products_model = '"
    . $quicky . "' " . "
                                           AND products_status = '1' "
    . $group_check
                                        );

          if (!xtc_db_num_rows($quickie_query)) {
            if (GROUP_CHECK == 'true') {
              $group_check = "and group_permission_" . $_SESSION['customers_status']['customers_status_id'] . "=1 ";
            }
            $quickie_query = xtc_db_query("select products_fsk18,
                                                  products_id
                                             from "
    . TABLE_PRODUCTS . "
                                            where products_model LIKE '%"
    . $quicky . "%' " . "
                                              AND products_status = '1' "
    . $group_check
                                          );
          }
          if (xtc_db_num_rows($quickie_query) != 1) {
            xtc_redirect(xtc_href_link(FILENAME_ADVANCED_SEARCH_RESULT, 'keywords=' . $quicky, 'NONSSL'));
          }
          $quickie = xtc_db_fetch_array($quickie_query);
          if (xtc_has_product_attributes($quickie['products_id'])) {
            xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $quickie['products_id'], 'NONSSL'));
          } else {
            if ($quickie['products_fsk18'] == '1' && $_SESSION['customers_status']['customers_fsk18'] == '1') {
              xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $quickie['products_id'], 'NONSSL'));
            }
            if ($_SESSION['customers_status']['customers_fsk18_display'] == '0' && $quickie['products_fsk18'] == '1') {
              xtc_redirect(xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $quickie['products_id'], 'NONSSL'));
            }
            if ($quicky != '') {
              $act_qty = $_SESSION['cart']->get_quantity(xtc_get_uprid($quickie['products_id'], 1));
              if ($act_qty + $qty > MAX_PRODUCTS_QTY) {
                $act_qty = MAX_PRODUCTS_QTY - $qty;
              }
              $_SESSION['cart']->add_cart($quickie['products_id'], $act_qty + $qty, 1);
              xtc_redirect(xtc_href_link($goto, xtc_get_all_get_params(array('action')), 'NONSSL'));
            } else {
              xtc_redirect(xtc_href_link(FILENAME_ADVANCED_SEARCH_RESULT, 'keywords=' . $quicky, 'NONSSL'));
            }
          }
          break;
     

    damit bleibt der Code übersichtlicher und du kannst deine Änderungen leichter finden und warten.

    Der Link dazu sähe dann etwa so aus

    Code: XML  [Auswählen]
    <a href="http://onlineshop.tld/index.php?action=add_a_quickie_from_external&quickie=1245&quantity=5" target="_blank">In den Korb legen</a>
     

    bzw. in deiner Notation so

    Code: PHP  [Auswählen]
    index.php?add_a_quickie_from_external&quickie={artnr}&quantity={anzahl}
     

    Gruss
    Hanspeter

    Soeldner

    • Fördermitglied
    • Beiträge: 204
    • Geschlecht:
    grml ... jetzt hab ich das case mit if else abfragen verbogen ... auf das separate case hätte ich doch auch kommen können ... ist definitiv sauberer und Pflegeleichter!! So wird es gemacht.

    Vielen vielen Dank für Deine Unterstützung :)
    12 Antworten
    7546 Aufrufe
    10. Januar 2012, 00:20:22 von Tomcraft
    0 Antworten
    2053 Aufrufe
    07. Juni 2012, 09:32:11 von fish
    0 Antworten
    1498 Aufrufe
    03. November 2011, 11:03:00 von Marst
    0 Antworten
    2303 Aufrufe
    18. August 2012, 12:16:42 von pheelix