Umstellung des Shops auf Buttonlösung
Der Text beschreibt allein die technische Vorgehensweise zur Änderung von Programmabläufen. Dieses Tutorial ist keine Rechtsberatung und erhebt keinen Anspruch auf juristische Richtigkeit!
In allen bisherigen Versionen (Stand 03.2012) ist der Funktionsschalter (Button) zum endgültigen Abschluß einer Bestellung mit dem Terminus "Bestellen" beschriftet. Dies ist voraussichtlich ab Juni 2012 nicht mehr zulässig.
Zitat:
Nach dem Willen des Gesetzgebers sollen Verbraucher künftig bei kostenpflichtigen Onlineangeboten mit deutlichen Hinweisen von vorneherein besser vor versteckten Preisangaben geschützt werden. [...] Der Bestell-Button muss unmissverständlich auf die Zahlungspflicht hinweisen, z.B. mit den Worten „zahlungspflichtig bestellen“ oder einer entsprechenden eindeutigen Formulierung (vgl. §312 g Abs. 3 BGB n.F.). In der Gesetzesbegründung werden als zulässige Alternativen „kaufen“ „kostenpflichtig bestellen“ „zahlungspflichtigen Vertrag schließen“ genannt.
(Originalbeitrag v. Tomcraft, Forum vom 22.03.2012, Forum Ref.: Das neue „Button“- Gesetz zwingt zum Shop-Umbau im B2C-Handel)
Um den Bestellschalter auf den Terminus "Kaufen" umzustellen sind folgende Schritte auszuführen.
1. Austausch der Buttongrafik
Die Grafik ist Teil des Templates. In der Standardversion, im Standardtemplate xtc5, liegt die Grafik in folgenden Ordnern:
templates/xtc5/buttons/german/button_confirm_order.gif templates/xtc5/buttons/english/button_confirm_order.gif
Falls weitere Sprachen installiert sind, sind entspr. weitere sprachabhängige Grafiken zu berücksichtigen. Wenn ein anderes, als das xtc5-Standardtemplate, benutzt wird sind die Grafiken des tatsächlich verwendeten Templates zu berücksichtigen und auszutauschen.
templates/...mein.eigenes.template.../buttons/german/button_confirm_order.gif templates/...mein.eigenes.template.../buttons/english/button_confirm_order.gif
Diese Grafikdateien sind zu ersetzen gegen Versionen mit der Beschriftung "Kaufen" oder entsprechendes (siehe oben). Für das xtc5-Template stehen in folgender Downloaddatei Ersatzgrafiken zur Verfügung: Download Xtc5 grafik buttonloesung 03 2012.zip
2. Ersatz des Hinweistextes
Hält man den Mausteiger still über dem Funktionsschalter erscheint ein kurzer Hinweistext (Tooltip). Dieser muß ebenfalls korrigiert werden auf den Terminus "Kaufen".
Dateien:
lang/german/german.php lang/english/english.php Zeile 188 ungefähr.
Finde:
define('IMAGE_BUTTON_CONFIRM_ORDER', 'Bestellung bestätigen');
bzw.
define('IMAGE_BUTTON_CONFIRM_ORDER', 'Confirm order');
und ersetze Texte zu:
define('IMAGE_BUTTON_CONFIRM_ORDER', 'Kaufen');
bzw.
define('IMAGE_BUTTON_CONFIRM_ORDER', 'Buy');
3. Informationstext
(Bemerkt von Users Chris3680, 27.03.2012, Ref)
In der checkout_confirmation.php steht im 2. Satz folgendes:
Den Bestellvorgang können Sie jederzeit durch Schließen des Browser-Fensters abbrechen, oder durch Drücken des Bestellen Buttons abschließen.
Das Wort Bestellen sollte hier ebenfalls auf Kaufen geändert werden.
Änderung des Textes:
Datei lang/german/lang_german.conf
Suche Abschnitt [checkout_confirmation]
Zeile 333 ca.
text_information = 'Vor dem Absenden Ihrer Bestellung sehen Sie nochmals die von Ihnen eingegebenen Daten und Artikel. Durch Anklicken der <em><font color="#009933">(Bearbeiten)</font></em> Links neben den einzelnen Daten haben Sie nochmals die Möglichkeit, diese zu korrigieren.<br />Den Bestellvorgang können Sie jederzeit durch Schließen des Browser-Fensters abbrechen, oder durch Drücken des <strong>Bestellen</strong> Buttons abschließen.'
Ändern in:
text_information = 'Vor dem Absenden Ihrer Bestellung sehen Sie nochmals die von Ihnen eingegebenen Daten und Artikel. Durch Anklicken der <em><font color="#009933">(Bearbeiten)</font></em> Links neben den einzelnen Daten haben Sie nochmals die Möglichkeit, diese zu korrigieren.<br />Den Bestellvorgang können Sie jederzeit durch Schließen des Browser-Fensters abbrechen, oder durch Drücken des <strong>Kaufen</strong> Buttons abschließen.'
Ebenso in englisch:
Datei lang/english/lang_english.conf
Suche Abschnitt [checkout_confirmation]
Zeile 333 ca.
text_information = 'Please check your order details before confirmation. You can still change the adresses by clicking the <em><font color="#009933">(Edit)</font></em> links next to them.<br />You can confirm your order by pressing the <strong>Confirm Order</strong> Button at the end of this order page.'
Ändern in:
text_information = 'Please check your order details before confirmation. You can still change the adresses by clicking the <em><font color="#009933">(Edit)</font></em> links next to them.<br />You can confirm your order by pressing the <strong>Buy</strong> Button at the end of this order page.'
Anmerkung des Users Teeblume (25.03.2012, Ref)
Hier noch eine Ergänzung. In vielen AGB's steht u.a. ein Satz zum Vertragsabschluss wie: 'Mit Absenden der Bestellung (durch Anklicken des Buttons „Bestellen“) geben Sie eine verbindliche Bestellung der im Warenkorb aufgelisteten Waren auf. .... ' Dieser Text müsste dann auch angepasst werden.
Zusätzlich wird gefordert, dass auch zumindest die Artikel Kurzbeschreibung auf der letzten Seite angezeigt wird.
Dazu sind diese Änderungen notwendig:
1. /includes/classes/order.php ca. Zeile 440
suche das hier:
$this->products[$index] = array('qty' => $products[$i]['quantity'], 'name' => $products[$i]['name'], 'model' => $products[$i]['model'],
danach das hier einfügen:
'description' => $products[$i]['description'], 'short_description' => $products[$i]['short_description'],
2. /includes/classes/shopping_cart.php in der function get_products() ca. Zeile 374
suche das hier:
while (list ($products_id,) = each($this->contents)) { if($this->contents[$products_id]['qty'] != 0 || $this->contents[$products_id]['qty'] !=){ $products_query = xtc_db_query("select p.products_id, pd.products_name,
füge danach das hier ein:
pd.products_description, pd.products_short_description,
weiter ca. Zeile 390
suche das hier:
$products_array[] = array (
'id' => $products_id,
'name' => $products['products_name'],
danach das hier einsetzen:
'description' => $products['products_description'],
'short_description' => $products['products_short_description'],
3. /checkout_confirmation.php
suche das hier ca Zeile 200
if (ACTIVATE_SHIPPING_STATUS == 'true') {
davor einfügen:
$data_products .= '<tr>
<td class="main" align="left" valign="top"> </td>
<td class="main" align="left" valign="top"><small>' . (!empty($order->products[$i]['short_description'])?$order->products[$i]['short_description']:$order->products[$i]['description']). '</small></td>
<td class="main" align="right" valign="top"> </td>
<td class="main" align="right" valign="top"> </td>
</tr>';
Alternativ, wenn man das ganze ein wenig vom HTML Code "entschlacken" will und bei der Langbeschreibung maximal 300 Zeichen anzeigen will:
$data_products .= '<tr>
<td class="main" align="left" valign="top"> </td>
<td class="main" align="left" valign="top"><small>' . (!empty($order->products[$i]['short_description'])?trim(strip_tags($order->products[$i]['short_description'])):trim(substr(strip_tags($order->products[$i]['description']),0,300))). ' [...]' . '</small></td>
<td class="main" align="right" valign="top"> </td>
<td class="main" align="right" valign="top"> </td>
</tr>';
Oder aber, wenn die Zeichen [...] nur dann angezeigt bekommen möchte, wenn wirklich Text hinten abgeschnitten wurde, dann:
$data_products .= '<tr>
<td class="main" align="left" valign="top"> </td>
<td class="main" align="left" valign="top"><small>';
if (!empty($order->products[$i]['short_description'])) {
$data_products .=trim(strip_tags($order->products[$i]['short_description']));
} else {
$data_products .=trim(substr(strip_tags($order->products[$i]['description']),0,300));
if (strlen(strip_tags($order->products[$i]['description'])) > 300) $data_products.=' [...]';
}
$data_products .='</small></td>
<td class="main" align="right" valign="top"> </td>
<td class="main" align="right" valign="top"> </td>
</tr>';
Damit wird nun schon mal die Kurzbeschreibung angezeigt. Sollte keine vorhanden sein, wird die normale Beschreibung angezeigt.
Anmerkung eines Laien:
Der Gesetzgebers will vermutlich erreichen, dass der Zusammenhang zwischen Artikelbeschreibung und der Aktion "Kaufen" für den Käufer unmissverständlich dargestellt wird. Ein zweiter Kaufen-Button bewirkt jedoch das Gegenteil.
Es könnte daher besser sein, statt eines zweiten Buttons die Artikelbeschreibung so weit nach unten zu verschieben, dass sie sich unmittelbar über dem bereits vorhandenen Kaufen-Button befindet.
Erweiterung um Zollhinweis: gemäß r3037
Datei /checkout_confirmation.php
Suche:
}
$smarty->assign('CUSTOMERS_IP', $customers_ip);
}
Danach einfügen:
//Zollhinweis
$smarty->assign('DELIVERY_DUTY_INFO', $main->getDeliveryDutyInfo($order->delivery['country']['iso_code_2']));
Datei /includes/classes/main.php
Ganz am Ende der Datei aber noch vor:
}
?>
einfügen:
//Zollhinweis beim Checkout
function getDeliveryDutyInfo($iso2code) {
$eu_countries_query = xtDBquery("SELECT p.countries_iso_code_2
FROM ".TABLE_COUNTRIES." p,
".TABLE_ZONES_TO_GEO_ZONES." pd
WHERE pd.geo_zone_id=5
AND pd.zone_country_id = p.countries_id
");
if (xtc_db_num_rows($eu_countries_query, true)) {
$eu_countries = array ();
while ($eu_countries_values = xtc_db_fetch_array($eu_countries_query, true)) {
$eu_countries[] = $eu_countries_values['countries_iso_code_2'];
}
}
if (!in_array($iso2code, $eu_countries)) {
return true;
}
}
Datei /lang/german/lang_german.conf
Füge am Ende der Sektion [checkout_confirmation] hinzu:
text_duty_info = 'Bei Lieferung in das Nicht-EU-Ausland können weitere Zölle, Steuern oder Gebühren vom Kunden zu zahlen sein, jedoch nicht an den Anbieter, sondern an die dort zuständigen Zoll- bzw. Steuernbehörden. Dem Kunden wird empfohlen, die Einzelheiten vor der Bestellung bei den Zoll- bzw. Steuerbehörden zu erfragen.'
Datei /lang/english/lang_english.conf
Füge am Ende der Sektion [checkout_confirmation] hinzu:
text_duty_info = 'If you are ordering from outside of the EU it is possible that you have to pay additional customs duties, taxes or fees to your public authorities. We recommend our customers to clear particulars before ordering!'
Datei /templates/<template-name>/module/checkout_confirmation.html
Suche:
<h2>{#text_payment_info#}</h2>
<p>{$PAYMENT_INFORMATION}</p>
{/if}
Danach einfügen:
{if $REVOCATION}
<strong>{$REVOCATION_TITLE}</strong> {$REVOCATION_LINK}<br />
<strong>{$AGB_TITLE}</strong> {$AGB_LINK}
{/if}
Suche:
{if $REVOCATION} <strong>{$REVOCATION_TITLE} </strong> {$REVOCATION} <strong>{$REVOCATION_TITLE}</strong> {$REVOCATION_LINK}<br />
<strong>{$AGB_TITLE}</strong> {$AGB_LINK} {/if}
<br /><br />
<div>{$CHECKOUT_FORM}{if $MODULE_BUTTONS!=''} {$MODULE_BUTTONS}{/if} {$CHECKOUT_BUTTON}</div>
Ersetze mit:
{if $DELIVERY_DUTY_INFO}
<div style="font-size:11px; margin-bottom: 10px; border:1px solid red; padding:5px;">{#text_duty_info#}</div>
{/if}
<div style="text-align:right">{$CHECKOUT_FORM}{if $MODULE_BUTTONS!=''} {$MODULE_BUTTONS}{/if} {$CHECKOUT_BUTTON}</div>
Ergänzung: Wer den Zoll-Hinweis in den Mails haben will, der findet hier die kompletten Änderungen: Änderungen in / [3112:3117]