Hallo,
in Anlehnung an den Beitrag:
http://www.modified-shop.org/forum/topic.php?id=1586#post-15616ist hier die Fortsetzung:
Um das Problem mit den unterschiedlichen Mengeneingaben für Links und Rechts zur realisieren habe ich einfach ein neues Artikelattribut mit Namen "Anzahl" angelegt und die Werte 0-5 zugeordnet. Vorbelegt ist das Dropdown mit dem Wert 1.
[ Für Gäste sind keine Dateianhänge sichtbar ]
product_info_v1.htmlDamit das Mengeneingabefeld neben dem Warenkorbbutton nicht mehr sichtbar ist, habe ich in der product_info_v1.html dem <td>-Tag für das Eingabefeld das Style: display:none zugewiesen.
Da die Vorlage product_info_v1.html ja auch für alle nicht L/R-Produkte verwendet wird, ist besser diese zu komieren und umzubenennen. Bei mir heisst die spezielle jetzt product_info_lens.html.
shopping_cart.phpDa ja das Dropdown nur für die Anzahl benutzt werden soll und nicht als Option im Warenkorb bzw. späteren Bestellablauf angezeigt werden soll, müssen wir in der shopping_cart.php noch etwas basteln.
Die Funktion add_cart() habe ich folgendermaßen ergänzt:
Am Anfang, gleich nach:
function add_cart($products_id, $qty = '1', $attributes = '', $notify = true) {
Folgendes einfügen:
//BOF L/R: Attribute löschen, die ein 'L' für Links enthalten if (is_array($attributes)) { foreach ($attributes as $i => $wert1) { if (stristr($i, 'L')) unset($attributes[$i]); } } //EOF L/R: Attribute löschen, die ein 'L' für Links enthalten //BOF L/R: Attribut Anzahl aus DB auslesen $anz = 0; if (is_array($attributes)) { while (list ($option_id, $value_id) = each($attributes)) { if (stristr($option_id, '4')) { $sql = xtc_db_query
("SELECT
products_options_values.products_options_values_name
FROM
products_options_values
WHERE
products_options_values_id='$value_id' AND
language_id='1'"); while ($ds = mysql_fetch_object($sql)) { $wert = $ds -> products_options_values_name; } $qty = $wert; } } } //EOF L/R: Attribut Anzahl aus DB auslesen //BOF L/R: Attribut "Anzahl" löschen $sql = xtc_db_query
("SELECT
products_options.products_options_id
FROM
products_options
WHERE
products_options_name = 'Anzahl'"); while ($ds = mysql_fetch_object($sql)) { $anzahl_id = $ds -> products_options_id; } if (is_array($attributes)) { foreach ($attributes as $i => $test) { if (stristr($i, $anzahl_id)) unset($attributes[$i]); } } //EOF L/R: Attribut "Anzahl" löschen Mit der Änderung überschreibe ich die Artikelanzahl aus $qty mit dem Wert aus dem Artikelattribut "Anzahl" (bei mir hat es die ID 4).
Anschließend lösche ich das Attribut "Anzahl" aus dem Array $attributes.
Das gleiche muss natürlich auch noch für die Funktion add_cart_rechts() geändert werden.
Damit sieht's im Warenkorb dann so aus:
[ Für Gäste sind keine Dateianhänge sichtbar ]
Folgende Probleme gibt es noch:
1. Wird der gleiche Artikel (auch mit gleichen gewählten Attributen) nochmal in den Warenkorb gelegt, dann wird nicht die Anzahl erhöht, sondern er landet als neuer Artikel in den Warenkorb.
2. ...das macht mir mehr Sorgen... Mache ich einen Warenkorb-Update (z.B. Anzahl ändern), dann löscht es immer die Artikelattribute bei dem "linken" Artikel.
Kein Plan warum...
[ Für Gäste sind keine Dateianhänge sichtbar ]
Steffen