Umstellung des Shops auf Buttonlösung

Aus Wiki | modified eCommerce Shopsoftware
Zur Navigation springenZur Suche springen

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&ouml;glichkeit, diese zu korrigieren.<br />Den Bestellvorgang k&ouml;nnen Sie jederzeit durch Schlie&szlig;en des Browser-Fensters abbrechen, oder durch Dr&uuml;cken des <strong>Bestellen</strong> Buttons abschlie&szlig;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&ouml;glichkeit, diese zu korrigieren.<br />Den Bestellvorgang k&ouml;nnen Sie jederzeit durch Schlie&szlig;en des Browser-Fensters abbrechen, oder durch Dr&uuml;cken des <strong>Kaufen</strong> Buttons abschlie&szlig;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">&nbsp;</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">&nbsp;</td>
              <td class="main" align="right" valign="top">&nbsp;</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">&nbsp;</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">&nbsp;</td>
              <td class="main" align="right" valign="top">&nbsp;</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">&nbsp;</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">&nbsp;</td>
             <td class="main" align="right" valign="top">&nbsp;</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&ouml;nnen weitere Z&ouml;lle, Steuern oder Geb&uuml;hren vom Kunden zu zahlen sein, jedoch nicht an den Anbieter, sondern an die dort zust&auml;ndigen Zoll- bzw. Steuernbeh&ouml;rden. Dem Kunden wird empfohlen, die Einzelheiten vor der Bestellung bei den Zoll- bzw. Steuerbeh&ouml;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!=''}&nbsp;{$MODULE_BUTTONS}{/if}&nbsp;{$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!=''}&nbsp;{$MODULE_BUTTONS}{/if}&nbsp;{$CHECKOUT_BUTTON}</div>


Ergänzung: Wer den Zoll-Hinweis in den Mails haben will, der findet hier die kompletten Änderungen: Änderungen in / [3112:3117]