Wie sich das Update auf Magento 1.9.2.1 auf Middle Name auswirkt
Erstens die Lösung
Ich hatte das gleiche Problem beim Update auf Magento CE 1.9.2.1 von Magento CE 1.9.2.0 . Das Update verursachte, dass Middle Name angezeigt wurde, aber als ich den Administrator überprüfte, zeigte die System > Configuration > Customers > Customer Configuration > Name and Address Options
Einstellung "Show Middle Name (initial)" bereits "No" an - was ich wollte. Ich habe die Einstellung in "Ja" und dann wieder in "Nein" geändert, bevor ich auf "Konfiguration speichern" geklickt habe. Dadurch wurde Middle Name / Initial beim Aktualisieren der Seite sofort aus der Kasse entfernt.
Die Datenbank
In meinem Fall arbeite ich daran, einen Store von Magento 1.8.x auf Magento 1.9.x zu aktualisieren. In meiner Entwicklungsumgebung habe ich ein Update von 1.9.2.0 auf 1.9.2.1 durchgeführt. Um die Live-Site auf den neuesten Stand zu bringen, wenn wir das Upgrade von 1.8.x auf 1.9.x starten, müssen wir viele der Administratoreinstellungen aktualisieren, die wir mit einer Abfrage direkt in der Datenbank vornehmen möchten. In der Datenbank können Sie sehen, wie Magento die Middle Name-Einstellung ändert.
Die angezeigte Admin-Einstellung kann irreführend sein
Die Tabelle "core_config_data" behandelt die Administratoreinstellung für "Show Middle Name (initial)" mit dem Datensatz where `core_config_data`.`path`='customer/address/middlename_show'
.
Dieser Datensatz enthält die Einstellung im Feld "Wert" (0 = "Nein", 1 = "Ja"). Dieses Feld wird nicht geändert, wenn der zweite Vorname beim Upgrade auf Magento CE 1.9.2.1 angezeigt wird . Wenn Sie eine Änderung an "Show Middle Name (initial)" in den Admin-Einstellungen speichern, nachdem Magento während des Updates auf 1.9.2.1 Änderungen vorgenommen hat, wird hier der Wert "core_config_data" geändert.
Das Update auf 1.9.2.1 hat den Eintrag in "core_config_data" und damit auch die Anzeige in den Admin-Einstellungen nicht verändert. Das Update ändert jedoch einen anderen Datensatz einer anderen Tabelle.
Die tatsächliche Sichtbarkeit des Zweitnamens befindet sich in "customer_eav_attribute"
In meinen vielen Dev-Instanzen von Magento hat die Tabelle "eav_attribute" 2 "Middle Name" "attribute_code" (s), die "attribute_id" (s) sind 6 und 21 . Die Tabelle "customer_eav_attribute" legt die Sichtbarkeit des Attributs mit einem Feld "is_visible" fest.
- In meiner Live 1.8.x Umgebung hatten `attribute_id` (s) 6 und 21
`is_visible` = 0
.
- Nach dem Update des Entwicklers auf Magento CE 1.9.2.1 von Magento CE 1.9.2.0 wurde es
`is_visible` = 1
.
- Nachdem ich umgeschaltet und den Administrator "Show Middle Name (initial)" auf "No" gespeichert hatte,
`is_visible`=0
verschwand das Feld " Middle Name / Initial" wieder aus Checkout.
Zusammenfassung
Das Update von Magento CE 1.9.2.1 hat die Einstellung " Zweiter Vorname" in der Tabelle "customer_eav_attribute" umgedreht, ohne dass dies Auswirkungen auf die Anzeige im Magento-Administrator unter der Einstellung " Zweiter Vorname (Anfänglich) anzeigen" hat. Sie können die Einstellung so ändern, wie sie normalerweise im Administrator vorgenommen wird, ohne weitreichende Vorlagenanpassungen vornehmen zu müssen, indem Sie die Einstellung "Show Middle Name (Initial)" aktivieren.
Randnotiz
Wenn Sie diese Administratoreinstellung aus irgendeinem Grund auf mehrere Kopien eines Geschäfts oder in einer Reihe von Administratoraktualisierungen übertragen müssen, z. B. während Sie ein Geschäft aktualisieren, um es an eine Entwicklungsumgebung anzupassen, können Sie die folgende SQL-Anweisung für diese Einstellung verwenden ( vorausgesetzt, Sie wissen, dass "zweiter Vorname" in Ihrem Geschäft "attribute_id" 6 und 21 ist. Dies ist in Magento Standard, aber um sicherzugehen, überprüfen Sie zuerst Ihre Tabelle "eav_attribute".).
UPDATE customer_eav_attribute SET is_visible = 0 WHERE attribute_id IN (6, 21);
Die technische Antwort
Die Systemkonfigurationsoption verfügt über ein Backend-Modell (
Mage_Adminhtml_Model_System_Config_Backend_Customer_Show_Customer
), dessen_afterSave
Methode die gleiche Änderung im Kunden-EAV-Attribut vornimmt (Tabelle:)customer_eav_attribute
.Der Systemkonfigurationsoptionswert und der EAV-Attributwert
is_visible
sind möglicherweise nicht unbedingt synchron (entweder aufgrund eines Magento-Upgrades oder wenn die Konfigurationsoption programmgesteuert geändert wurde oder aus einem anderen Grund).Wenn Sie den Schalter ein paarmal umlegen, wird das Problem behoben. Wenn Sie wie ich sind und für alles Installations- / Upgrade-Skripte verwenden, können Sie Folgendes tun:
quelle
$attribute = Mage::getSingleton('eav/config') ->getAttribute('customer_address', 'middlename') ->setIsVisible(0) ->save();
Der einfachste Weg:
Magento ver. 1.9.2.1
Show Middle Name (initial)
=No
quelle
Entfernen,
{{depend middlename}}{{var middlename}}
wie @sr_magento in seiner Antwort vorschlägt, entfernt dasShow Middle Name (initial)
Feld nicht von der Checkout-Seite. Es wird nur aus den Bereichen entfernt, in denen die Kundenadressinformationen gerendert / gedruckt werden, z. B. im Administrationsbereich, in PDFs und in E-Mail-Vorlagen.Das Feld muss nicht aus den E-Mail-Vorlagen entfernt werden. Dies ist zu viel des Guten und Sie müssten diese Einträge erneut zu den E-Mail-Vorlagen hinzufügen, falls Sie sich entscheiden, die
Show Middle Name(initial)
zu einem späteren Zeitpunkt zu aktivieren .Ich habe diesen Fehler auch bemerkt, nachdem ich mit dem Magento-Downloader von Magento CE 1.9.2.0 auf Magento CE 1.9.2.1 aktualisiert habe . Das Update scheint die Einstellung für
Show Middle Name (initial)
unter anzupassenvon "Nein" bis "Ja" . Es ist mir in mehreren Läden auf verschiedenen Servern passiert.
Um dies rückgängig zu machen, setzen Sie es einfach zurück auf "Nein" und speichern Sie die Konfiguration. Das
Show Middle Name (initial)
Feld wird nicht mehr auf der Checkout-Seite angezeigt.quelle
Address Templates
Ihnen vorgeschlagene ändern, werden die Eingabefelder für die Checkout-Seite im Frontend des Shops nicht geändert. Es wirkt sich nur auf die Vorlagen zum Drucken von Adressen aus. Bitte lesen Sie die folgende Dokumentation . Sie haben Recht mit den Kundenbereichen im Admin-Bereich. Ich werde diesen Teil meiner Antwort umformulieren.Wenn Sie direkt aus der Datei entfernen möchten, dann
Öffnen Sie die folgende Datei
Suchen Sie nach dem
if ($this->showMiddlename())
Auskommentieren oder entfernen Sie die vollständige if-Anweisungquelle