Bitte könnte jemand einen Leitfaden zum Entfernen des 'erforderlichen' Telefonfelds an der Kasse auf der Grundlage des Magento-Layouts Version 1.8.0.0 veröffentlichen. Die meisten der derzeit gegoogelten Ressourcen sind veraltet und funktionieren nicht mehr. Dies scheint der perfekte Ort zu sein, um eine aktualisierte Anleitung zu erhalten.
Es wäre hilfreich, wenn jemand die funktionierende Lösung bestätigen könnte, indem er Magento 1.8.0.0 herunterlädt und den Nachweis der Entfernung erbringt. Diese Codefragmente sind manchmal hilfreich, aber wir müssen noch eine funktionierende Lösung auf einfach zu lesende / dokumentierte Weise finden.
Antworten:
Bevor
1.8.1
mir keine Möglichkeiten bekannt sind, wie dies funktioniert, müssen Sie entweder die abstrakte Kernklasse im lokalen Codepool überschreiben oder jede einzelne untergeordnete Klasse neu schreiben (hässlich, ich weiß).Von nun
1.8.1
an stellten sie die Veranstaltung vorcustomer_address_validation_after
. Ich habe die Validierung durch Reflexion beseitigt, auch wenn ich nicht zu stolz darauf bin. Könnte Ihr Problem nicht lösen, aber ich dachte, ich würde es trotzdem posten.Ich habe auch ein Aktualisierungsskript geschrieben, um die Datei als nicht erforderlich zu definieren, und alle Formulare bearbeitet, um die Frontend-Validierung zu entfernen. Wie ich schon sagte, es ist vielleicht nicht die beste Lösung, aber es ist besser, als IMHO 3-4 Klassen neu zu schreiben.
UPDATE Das Kernteam wickelte das Ereignis
customer_address_validation_after
in einem bedingten ausgehend von1.9.0
durch1.9.1.1
(ich wirklich fragen , warum, für mich keinen Sinn macht ...) so meine Lösung funktioniert nicht für diese Versionen, leider. Die Bedingung wurde zum Glück entfernt1.9.2
.quelle
Sie müssen die
Mage_Customer_Model_Address_Abstract
Klasse * in Zeile 375-377 ändern, um die Zend-Validierung der Telefonnummer zu kommentieren.sowie das Telefonattribut selbst in der Datenbank, das die erforderliche Klasse entfernt. Dies kann mit der folgenden Abfrage erfolgen
Dadurch wird die Frontend-Validierung (Javascript) der Telefonfelder durchgeführt.
** Stellen Sie sicher, dass Sie die Klassendatei in Ihr
local
Codeverzeichnis kopieren. *quelle
eav_attribute
mit dem Code 'Telefon' enthalten, sodass Sie nicht feststellen können, welcher aktualisiert wurde. Dann sollte der Code funktionieren (habe ihn gerade getestet). Für den visuellen Teil müssen Sie dann noch<em>*</em>
die Beschriftung des Feldes in allen Formularen entfernen (Kasse / Adressbearbeitung). Wenn Sie eine Art One-Step-Checkout installiert haben, kann dies natürlich einige der Standardfunktionen von Magento überschreiben, und diese Antwort funktioniert möglicherweise nicht.Ich würde vorschlagen, die Adressvorlage für das Site-Thema zu ändern und das Telefon zu einem versteckten Feld mit einem Standardwert als Leerzeichen oder Bindestrich zu machen. Dies erfordert kein Umschreiben / Überschreiben.
quelle
Könnten Sie nicht einfach die Klassen, die das Abstract verwenden, mit einer benutzerdefinierten Erweiterung umschreiben und die Konfiguration neu schreiben?
Mage_Sales_Model_Quote_Address
,Mage_Customer_Model_Address
,Mage_Sales_Model_Order_Address
,Dann können Sie Ihre eigene
validate
Funktion erstellen, die die telefonische Prüfung ausschließt, oder besser noch alle erforderlichen Attribute prüfen und überprüfen, ob sie festgelegt sind.quelle
Ich bin gerade auf eine nette kleine Erweiterung "Webguys_Telefonkeinpflicht" von Tobi gestoßen, die im Grunde Davids Ansatz folgt. Es schreibt die jeweiligen Unterklassen neu. Was mir ziemlich gut gefällt, ist die Tatsache, dass nur ein Ereignis in den umgeschriebenen Klassen ausgelöst wird und alle weiteren Anpassungen dann in einem Ereignisbeobachter vorgenommen werden. Es beobachtet auch das
core_block_abstract_to_html_after
Ereignis, um den Stern und die erforderliche Klasse mit etwas Regex-Schwarzmagie aus dem Eingabefeld zu entfernen. Und es kommt natürlich mit einem Setup-Skript, das das Telefonattribut in dereav_attribute
Tabelle nicht benötigt . Sie können die Erweiterung auf GitHub überprüfen .quelle