Setzt man ein Open Source System wie Magento ein, so gibt es einige Dinge, die man gegebenenfalls an der Standardausführung ändern möchte. Dazu gehört sicherlich die Eingabe der Telefonnummer im Checkout, die im Magento Shop standardmäßig als Pflichtfeld angelegt ist. Leider lässt sich dies über die Magento Konfiguration nicht anpassen.

Im Folgenden zeige ich Ihnen, wie Sie – Programmierkenntnis vorausgesetzt – in wenigen Schritten das Telefon als optionales Feld setzen. Die Änderungen beziehen sich auf Magento 1.

1. Bearbeiten der Magento Datenbank mit phpmyadmin

Erstellen Sie eine Sicherungskopie der Magento Datenbank (für alle Fälle). Dies kann man entweder gleich über den phpmyadmin erledigen oder aber ganz komfortabel im Magento Backend unter System > Werkzeuge > Sicherungsdateien > Sicherungskopie der Datenbank.

Führen Sie danach folgenden SQL-Befehl im phpmyadmin aus:

UPDATE eav_attribute
SET is_required = 0
WHERE attribute_code = "telephone"

2. Anpassung der Magento Templates

Wenn Sie das Magento-Standard Template verwenden, kopieren Sie die folgenden Dateien aus dem Ordner
/app/design/base/default/template/
nach
/app/design/default/default/template/

Andernfalls kopieren Sie die Dateien aus dem Ordner
/app/design/base/default/template/
in Ihr Template unter
/app/design/PAKETNAME/THEMENAME/template/

Zu kopierende Ordner und Dateien:
template/checkout/onepage/billing.phtml
template/checkout/onepage/shipping.phtml
template/customer/address/edit.phtml
template/customer/form/register.phtml

Bearbeiten Sie danach die kopierten Dateien und suchen dabei nach telephone und entfernen in dem <label>-Tag jeweils das <em>*</em> und das class="required".

Beispiel für die Datei template/checkout/onepage/billing.phtml:

Original:

...
<div class="field">
<label for="billing:telephone" class="required"><em>*</em><?php echo $this->__('Telephone') ?></label>
<div class="input-box">
<input type="text" name="billing[telephone]" value="<?php echo $this->escapeHtml($this->getAddress()->getTelephone())?>" class="required" title="<?php echo $this->__('Telephone') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('telephone') ?>" id="billing:telephone">
</div>
</div>
...

Angepasst:

...
<div class="field">
<label for="billing:telephone" class="
"><?php echo $this->__('Telephone') ?></label>
<div class="input-box">
<input type="text" name="billing[telephone]" value="<?php echo $this->escapeHtml($this->getAddress()->getTelephone()) ?>" class="" title="<?php echo $this->__('Telephone') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('telephone') ?>" id="billing:telephone">
</div>
</div>
...

3. Anpassung des Magento Core

Kopieren Sie folgende Datei
/app/code/core/Mage/Customer/Model/Address/Abstract.php

nach
/app/code/local/Mage/Customer/Model/Address/Abstract.php

Bearbeiten Sie die kopierte Datei und suchen nach folgendem Inhalt:
if (!Zend_Validate::is($this->getTelephone(), 'NotEmpty')) {
$errors[] = Mage::helper('customer')->__('Please enter the telephone number.');
}

Entfernen Sie diesen Teil und speichern die Datei.

4. Update des Telefon-Attributs

Öffnen Sie folgende Datei (im Magento Root)
/index.php
und fügen ganz am Ende folgende Zeile ein
Mage::getModel('eav/entity_attribute') ->loadByCode('customer_address', 'telephone') ->setIsRequired(false) ->save();

Rufen Sie danach eine beliebige Seite im Shop auf und entfernen die Zeile danach wieder aus der index.php

5. Den Erfolg kontrollieren

Nun sollte die Telefonnummer im Magento Checkout als optionales Feld erscheinen. Kontrollieren Sie nun die Änderung.

Sollten Sie Hilfe bei dieser oder anderen Anpassungen an Ihrem Magento Shop benötigen, so kontaktieren Sie mich gerne über das Kontaktformular.

Hinweis: Führen Sie unbedingt vor den Änderungen ein Backup Ihres Shops durch, ich übernehme keine Haftung für eventuelle Schäden.