matcho Posted May 20, 2013 Report Share Posted May 20, 2013 Hallo Community, ich hoffe mir kann jemand helfen und ich verfasse diesen Beitrag nicht für umsonst. In unserem Shop werden Bücher immer versandkostenfrei verschickt. Da die Versandkostenregelung durch "Immer Versandkostenfrei mit Buch" mit dem Shopsystem nicht zu realisieren war, wurde hier in der Datei "template/xtCore/pages/shipping/shipping_default.html" eine php-Abfrage implementiert. In diesem Script wird ermittelt, ob der zusammengestellte Warenkorb einen Artikel aus der Kategorie "Bücher" enthält. Wenn das der Fall ist wird die Variable "$has_book" mit "true" gefüllt und somit unabhängig vom Bestellwert als einzige Versandart die vorausgewählte Variante "Versandkostenfrei" angezeigt. Das Script wird benötigt, da diese Konstellation von Veyton nicht abgedeckt wird. Also die Möglichkeit versandkostenpflichtige Bestellungen durch hinzufügen eines Artikels einer speziellen Kategorie in eine versandkostenfrei Bestellung umzuwandeln. Quellcode: {php} $hit = false; if (isset($_SESSION['cart']->content) and count($_SESSION['cart']->content) > 0) { global $db; $sql = ''; foreach ($_SESSION['cart']->content as $value) { if ($sql) $sql .= ', '; $sql .= $value['products_id']; } $sql = "SELECT C.categories_id, parent_id FROM xt_categories C LEFT JOIN xt_products_to_categories PC ON C.categories_id = PC.categories_id WHERE products_id IN ($sql)"; $record = $db->Execute($sql); $fz = false; $rest = false; while (!$record->EOF) { if ($record->fields['parent_id'] == 1 or ($record->fields['parent_id'] == 0 AND $record->fields['categories_id'] == 1)) { $hit = true; break; } $record->MoveNext(); } } $this->assign('has_book', $hit); {/php} [/PHP] Das Script funktioniert auch soweit, im Bestellvorgang versandkostenfrei angezeigt, wenn ein Buch enthalten ist. [PHP] {if $has_book} <table class="shippingblock" width="100%" border="0" cellspacing="0" cellpadding="6" > <tr> <td class="header" width="20"> {if $shipping_hidden == true} {form type=hidden name=selected_shipping value=buch} {else} {if $shipping_code==$shipping_selected} {form type=radio name=selected_shipping value=buch checked=true} {else} {form type=radio name=selected_shipping value=buch checked=true} {/if} {/if} </td> <td class="header" valign="top"><strong>Versandkostenfreier DPD-Versand (1-3 Werktage)</strong></td> {if $shipping_icon} <td class="header">{img img=$shipping_icon type=w_media_shipping}</td> {/if} <td class="header" align="right">0,00 €</td> </tr> <tr> <td colspan="3" class="maiwn">Ihre Bestellung wird nach Eingang der Zahlung versandkostenfrei mit DPD versendet.</td> </tr> </table> ... [/PHP] Einziges Problem an der ganzen Geschichte ist nun leider, dass wenn die Kategorie "Buch" (id:1) in weitere Unterkategorien gegliedert ist, das Script nicht mehr greift. Bspw.: Buch(id:1) > Methoden(id:167) > Kreativitätstechniken(id:79) Ich wäre über Hilfe sehr, sehr dankbar. Link to comment Share on other sites More sharing options...
Florentine Posted May 21, 2013 Report Share Posted May 21, 2013 Hallo Habe genau das selbe Problem gehabt mit den Büchern. Ich hab das mit einem Plugin von Bui-Hinsche gelöst. Mit dem Plugin "Artikel-Versandkosten" bekommst du genau die Funktion! Ist viel einfacher und funktioniert ohne Probleme. Man muss nur die Einstellungen entsprechend richtig machen. Wenn das für dich eine Lösung wäre, kann ich dir gern in Detail sagen wie ich es genau passend gemacht habe. Ansonsten kann ich mit dem script leider nicht weiter helfen. Mit der 4.1 funktioniert es auch, allerdings nur mit der Versandberechnung. Versandkosten direkt beim Artikel anzeigen und so, ist noch nicht auf die 4.1 angepasst worden. Kommt aber sicherlich bald. Aber bei mir hat es super mit der 4.0 funktioniert, und auch bei der 4.1 werden die Versandkosten richtig berechnet. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.