neunzehn83.de

Ein Mann, ein Blog, kein Plan.

xtc: Land-Dropdown im Warenkorb

XTC1 XTC2

Die Versandkosten im Warenkorb anzuzeigen ist ein toller Service. So sieht man direkt im Warenkorb den exakten Gesamtbetrag und die Gäste müssen sich nicht extra registrieren um die richtigen Versandkosten angezeigt zu bekommen. Bei international ausgerichteten Online-Shops macht es außerdem Sinn, den Gast über ein Land-Dropdown das Zielland festlegen zu lassen. So werden die Versandkosten entsprechend berechnet und auch die Preise inkl. oder exkl. MwSt. angezeigt.

Kommt für das ausgewählte Land nur eine Versandmethode in Frage, so wird gleich der Gesamtbetrag angezeigt. Kommen mehrere Versandarten in Frage, werden diese samt kosten aufgelistet.

Im xtcModified-Forum bin ich auch einen Thread gestoßen in dem beschrieben wird, wie man Versandkosten im Warenkorb anzeigt. Diese Änderung habe ich um das Land-Dropdown erweitert. Die Mehrwehrtssteuer werden dem ausgewähltem Land entsprechend berechnet. Das gewählte Land wird auch in das create_account-Formular übernommen.

Alle geänderten Files gibt es hier als Download oder hier als Patch - jeweils gegen die aktuelle xtcModified v1.05. Prinzipiell sollte das auch mit XTC SP2.1 funktionieren.

Im Detail:

/create_account.php und /create_account_guest.php
Suche:
if (isset($_POST['country'])) {
  $selected = $_POST['country'];
} else {
  $selected = STORE_COUNTRY;
}
 
Ersetze durch:
if (isset($_POST['country'])) {
  $selected = $_POST['country'];
} else if (isset($_SESSION['country'])) {
  $selected = $_SESSION['country'];
} else {
 $selected = STORE_COUNTRY;
}
 
/includes/cart_actions.php
Suche:
case 'update_product' :
 
Ersetze durch:
case 'update_product' :
 // Versandkosten im Warenkorb
 if (isset($_POST['country'])) {
 $_SESSION['country'] = xtc_remove_non_numeric($_POST['country']);
 }
 //-
 
/includes/classes/xtcPrice.php
Suche:
$this->TAX[$zones_data['class']]=xtc_get_tax_rate($zones_data['class']);
 
Ersetze durch:
// Versandkosten im Warenkorb
$country_id = -1;
if (isset($_SESSION['country']) && !isset($_SESSION['customer_id'])) {
  $country_id = $_SESSION['country'];
}
$this->TAX[$zones_data['class']]=xtc_get_tax_rate($zones_data['class'], $country_id);
//-
 
/includes/modules/order_details_cart.php
Suche:
$module_smarty->assign('TOTAL_CONTENT', $total_content);
 
Ersetze durch:
// Versandkosten im Warenkorb
include DIR_FS_CATALOG.'/includes/shipping_estimate.php';
//-
$module_smarty->assign('TOTAL_CONTENT', $total_content);
 
/templates/xtc5/modules/order_details.html
Suche:

 {$UST_CONTENT}{$TOTAL_CONTENT}{if $SHIPPING_INFO}{$SHIPPING_INFO}{/if}
  
 
 
Ersetze durch:

 
 {if $SELECT_COUNTRY}{#text_country#} {$SELECT_COUNTRY}{/if}
  {if $UST_CONTENT}{$UST_CONTENT}{else}{php}printf(TAX_INFO_EXCL, ''){/php}
{/if} {$TOTAL_CONTENT}
{foreach name=aussen item=shipping_data from=$shipping_content} {$shipping_data.NAME} ({$COUNTRY}): {$shipping_data.VALUE}
{/foreach} {if $total} {#text_total#}: {$total} {/if}

Außerdem die Datei "shipping_esitmate.php" im Ordner /includes platzieren.

Geschrieben am Mittwoch, 09. März 2011 und abgelegt unter Webtechnik.