Jump to content
xt:Commerce Community Forum

Überprüfung parent_id/categories_id im Warenkorb


Recommended Posts

Hallo Community,

ich hoffe mir kann jemand helfen und ich verfasse diesen Beitrag nicht für umsonst. :D

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

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

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...