Magento: Die Telefonnummer als Pflichtfeld entfernen

Ich bin eigentlich davon ausgegangen, dass es in einem so spezialisierten und vor allem, weit verbeitetem Shop System nicht weiter kompliziert sein sollte, die Telefonnummer als Pflichtfeld beim Checkout-Prozess zu entfernen. Dem ist aber leider nicht so. Es bleibt nur zu hoffen, dass es in den nächsten Versionen einfacher wird, die Felder und deren Eigenschaften einfacher zu verwalten.

Wie allzu oft gibt es hier leider auch keinen goldenen Weg, das Problem zu beheben. Auf der Suche nach der Lösung für meinen Fall bin ich auf verschiedene Ansätze aus verschiedenen Versionen gestoßen.

Kurze Beschreibung für die Aktuelle Magento-Version 1.6, die bei mir zu Erfolg geführt hat.

In diesem Fall sind 3 Sachen zu tun.

  1. In der Datenbank muss das Feld ‘telephone’ als nicht ‘required’ eingestellt werden. In der Administration habe ich dafür leider kein Haken gefunden der diese Änderung möglich macht.
    Nach dem richitgen Feld suchen könnt ihr mit foldendem SQL Befehl:

    SELECT * FROM eav_attribute WHERE attribute_code = 'telephone';
    

    Um das Feld dann zu ändern, dann folgenden Befehl:

    UPDATE eav_attribute SET is_required = 0 WHERE attribute_code = 'telephone';
    
  2. Als nächstes müssen die Templates angepasst werden. Magento prüft auch schon vor dem Absenden des Formulars ob alle Felder die als required gekennzeichnet sind auch wirklich ausgefüllt sind. Dafür müssen folgende Templates angepasst werden:
    • template/checkout/onepage/billing.phtml
    • template/checkout/onepage/shipping.phtml
    • template/customer/address/edit.phtml

    In meinem Shop gibt es das Billing Template auch noch mal unter:

    • template/persistent/onepage/billing.phtml

    Wenn diese Templates in eurem Theme nicht vorhanden sind, dann kopiert sie einfach aus dem Base Verzeichnis (Magento-Pfad/app/design/frontend/base/default/template/…) da sind auf jeden Fall alle Templates zu finden

  3. Was mich dann doch am Meisten gewundert hat, dass man nicht drum rum kommt eine Klass aus dem Core zu ändern. Das macht man natürlich nicht im Core Verzeichnis selbst, damit man die Änderung nicht bei jedem Magentoupdate erneut durchführen muss.Kopiert einfach die Klasse Mage_Customer_Model_Address_Abstract (app/code/core/Mage/Customer/Model/Address/Abstract.php) in den Lokalen Code Ordner app/code/local/Mage/Customer/Model/Address/Abstract.php
    Per SSH würde das so aussehen:

    cp app/code/core/Mage/Customer/Model/Address/Abstract.php app/code/local/Mage/Customer/Model/Address/Abstract.php
    

    Wenn ihr keinen SSH Zugangn habt geht es natürlich auch mit einem gewohnten FTP Client.In der kopierten Datei sucht ihr nun nach folgender Codepassage (ist relativ weit unten):

    
    if (!Zend_Validate::is($this->getTelephone(), 'NotEmpty')) {
    $errors[] = $helper->__('Please enter the telephone number.');
    }
    

    Die drei Zeilen könnt ihr kommplett auskommentieren.

 

Nach diesen Änderungen, Cache löschen nicht vergessen, ist es nun Möglich den Checkout Prozess auch ohne Telefonnummer abzuschließen.

Quellen: