Hi, in meinem alten Shop habe ich eine Funktion verwendet, mit der ich Produkte per Product ID auch von externen Webseiten in den Warenkorb legen konnte. Kennt jemand sowas auch für Gambio? Ich hatte versucht, das Script anzupassen, aber leider funktioniert es nicht und ich bekomme nicht einmal eine Fehlermeldung: PHP: <?php require('includes/application_top.php'); $allProducts = filter_input(INPUT_GET, 'product_id', FILTER_SANITIZE_STRING); $products = explode(',', $allProducts); //EXAMPLE URL: addproducts.php?product_id=28{8}17{7}15{9}19[1] foreach ($products as $product) { //get the productID $productID = (int)$product; //get product ID $product = htmlspecialchars ($product);// baustelle $prodid_query = xtc_db_query("select products_id, products_model from products where products_model = '" . $product . "'"); $prodid_fetch = xtc_db_fetch_array($prodid_query); $prodidString = xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART, 'action=buy_now' . '&products_id=' . $prodid_fetch['products_id']));// baustelle //check if it has a quantity (in square brackets) $hasquantity = false; if ((strpos($product, '[')) && (strpos($product, ']'))) { $hasquantity = true; //get quantity $productQuantity = substr($product, strrpos($product, '[') + 1, -1); } //if it has attributes because of curly brackets... if (strpos($product, '{')) { //use regular expressions to grab attributes and put them into "matches" array $matches = null; preg_match_all('~\\{([0-9]{1,3})\\}([0-9]{1,3})~', $product, $matches, PREG_SET_ORDER); $attributes = array(); foreach ($matches as $entry) { $attributes[$entry[1]] = $entry[2]; }; //if it has quantity if ($hasquantity == true){ //add/update cart item PLUS quantity $cart->add_cart($productID, ($cart->get_quantity(xtc_get_uprid($productID, $attributes))+$productQuantity), $attributes); } else { //add/update cart item PLUS 1 $cart->add_cart($productID, ($cart->get_quantity(xtc_get_uprid($productID, $attributes))+1), $attributes); } } else { //if we have a quantity (but no attributes)... if ($hasquantity == true){ $cart->add_cart($productID, ($cart->get_quantity(xtc_get_uprid($productID, $attributes))+$productQuantity)); } else { //if we have no quantity or attributes $cart->add_cart($productID, ($cart->get_quantity(xtc_get_uprid($productID, $attributes))+1)); } } $productID = 0; $productOptionID = 0; $optionValueID = 0; } xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART, '', 'SSL'));?> Fällt wem was auf? Viele Grüße, Lena
Ok, schon gut, ich bin zu blöd: Ich habe die Artikelnummer statt der Artikel-ID übergeben. SO kann es natürlich nicht klappen. Ich poste hier später noch die Lösung für diejenigen, die auch Interesse daran haben...
Hallo, hier meine Lösung ohne Support und ohne Garantie und ohne Haftung. Ich nutze sie, um beispielsweise auf anderen Webseiten Angebote einblenden zu können, die man dann per Klick direkt bei mir im Shop in den Warenkorb legt. Dieses Script als addcart.php im Gambio Hauptverzeichnis ablegen PHP: <?php // Shopfunktionen von Gambio nutzen require('includes/application_top.php'); // Artikelnummer, die in den Warenkorb gelegt werden soll, bereinigen und auslesen (heißt hier 'artnr' und muss ggf. angepasst werden) $product = filter_input(INPUT_GET, 'artnr', FILTER_SANITIZE_STRING); // Suche in der Shopdatenbank und gib mir die zur Artikelnr zugehörige Products_ID heraus $prodid_query = xtc_db_query("select products_id, products_model from products where products_model = '" . $product . "'"); $prodid_fetch = xtc_db_fetch_array($prodid_query); // Bisherigen Warenkorb für die offene Session leeren (kann auch auskommentiert werden) $cart->remove_all(); // Produkt in den Warenkorb legen $cart->add_cart($prodid_fetch['products_id']); // Weiterleitung zum Warenkorb xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART, '', 'SSL'));?> Das Script funktioniert nur für Artikel ohne Variationen. Entsprechend muss die Ursprungsseite, auf der das Produkt angezeigt wurde, die Variable artnr übergeben, also z. B. so: PHP: <?PHP// Hinter artnr festlegen, welche Artikelnr in den Warenkorb gelegt werden soll$redir = 'http://www.meinedomain.de/addcart.php?artnr=1234';?><INPUT type="button" value="In den Warenkorb" onClick="location.href='<?PHP echo $redir; ?>'"> Viel Erfolg damit! LG Lena
Hallo, bei der obigen Lösung gibts einen Bug im Zusammenhang mit Sessions und eine SQL Injection Möglichkeit. Bitte diesen addcart.php code verwenden:
Warum so kompliziert? Gambio hat so was schon an Bord... PHP: http://www.meinedomain.de/index.php?action=buy_now&BUYproducts_id=Artikel-Id
Hallo Avenger, gut dass das bei mir nicht funktioniert - ich hätte mich ja tot geärgert nach all der Arbeit die ich da reingesteckt habe ;-) Gibts noch einen Syntaxfehler oder ein Session Problem? Viele Grüße, Burkhard
wenn ich das so eingebe: (Link nur für registrierte Nutzer sichtbar.) bekomme ich nur die index.php angezeigt
test noch, melde mich danach wieder Funktioniert, er hat den Artikel in den Warenkorb gelegt. Allerdings bin ich noch innerhalb meines Shops und möchte auf der Seite bleiben und nicht zur index.php gehen. Da muss ich noch grübeln............ ----------------------------------------------------------------------------------------- wenn ich statt index.php die Produktseite: product_info.php?info=p1522_heatstrip-mhs-1800.html einsetze, funktioniert es nicht mehr. also = GX2-Test-NEU/product_info.php?info=p1522_heatstrip-mhs-1800.html?action=buy_now&BUYproducts_id=1523 Was ist denn anders an dem Befehl bei index.php-Seite und der Produkt.html-Seite?
Nein, bisher nicht..... Der Code ist zwar da, aber ein ziemlich übles Machwerk, weil GET- und POST-Parameter sinnlos gemixt werden... Man kann das aber relativ einfach heilen: In "includes/cart_actions.php" nach PHP: case 'buy_now' : einfügen PHP: //Avenger if (!$_POST['products_id']) { $_POST['products_id']=$_GET['BUYproducts_id']; $_POST['id']=''; } //Avenger dann funktioniert das.....