Wir benötigen eine einfache Methode, um einem Kundendatensatz ein Attribut hinzuzufügen, das nicht vom Kunden oder Administrator bearbeitet werden kann, sondern nur programmgesteuert. Im Wesentlichen haben wir eine ExpressionEngine-Site, die mit Magento gekoppelt ist.
Wir authentifizieren uns über den Webservice und möchten einige JSON-Daten, die wir von der Authentifizierung erhalten, im Datensatz des Kunden speichern und bei jeder Anmeldung aktualisieren.
Wir möchten auch, dass die Daten geändert werden, wenn sie sich während des Bestellvorgangs ändern, z. B. die Lieferadresse. Wir senden die Daten dann an unseren Webservice zurück, wie wir dies derzeit bei jeder Bestellung tun.
Ist dies schwierig, da wir jetzt für jedes Produkt JSON mit einem benutzerdefinierten Attribut und der Erweiterung "Benutzerdefinierte Optionen" von MageWorx speichern?
Ich habe den Online Module Creator hier verwendet http://www.silksoftware.com/magento-module-creator/ , bin mir aber nicht sicher, wie ich den Wert nach der Installation des Moduls ändern oder abrufen soll.
Wo kann ich lernen, wie man eine Erweiterung dazu schreibt?
customer_entity
Tabelle speichern möchten, müssen Sie die Spalte der Tabelle hinzufügen und in dem Skript, das das Attribut hinzufügt (siehe meine Antwort unten), den Typ vonvarchar
bis ersetzenstatic
.customer_entity
Tabelle hinzugefügt . Und mein Attribut ist vom Typ 'select'. Ich möchte meinen Attributwert direkt in dieser 'custom_column' in dercustomer_entity
Tabelle speichern . Wie geht das?Antworten:
/app/code/local/Your/Customattribute/sql/your_customattribute_setup/install-0.1.0.php
/app/code/local/Your/Customattribute/etc/config.xml
app / etc / modules / Your_Customattribute.xml
Zum Abrufen oder Bearbeiten verwenden Sie dann:
Sie müssen Ereignisbeobachter für das Anmeldeereignis erstellen, die hier beantwortet werden: Wie kann ich nach erfolgreicher Anmeldung Kundendaten vom Beobachter abrufen?
und wahrscheinlich auch Beobachter für den customer_save_after, falls sie ihre Adresse in account mgmt ändern, und eine für das Angebot, die sich an verschiedenen Orten befinden kann, je nachdem, was Sie anstreben.
quelle
Es gibt eine Menge benutzerdefinierter Funktionen, die Sie selbst als benutzerdefinierte Modulüberschreibungsklassen erstellen und in Ereignisse einbinden müssen, bei denen Daten an Ihren Webdienst übergeben werden sollen. Was das Attribut betrifft, können Sie
config.xml
in Ihrem Installationsskript Folgendes tun , wenn Sie Ihr benutzerdefiniertes Modul erstellen und eine Setup-Ressource für dieses Modul definieren, wie im obigen Lernprogramm beschrieben:[module_path] / sql / [resource_node_defined_in_config_xml] / mysql4-install- [module_version_number] .php
user_defined
macht das Attribut zu einemsystem
Attribut, wenn es auf gesetzt ist0
, wodurch die Möglichkeit deaktiviert wird, es aus dem Administrator zu löschen.quelle
Nach einer Menge Core-Debugging habe ich herausgefunden, dass Magento erwartet, dass sich die Datei entweder in data / Companyname_Modulname_setup / oder in sql / Companyname_Modulname_setup / befindet .
Und es muss
mysql4-data-upgrade-OLDVERSION-NEWVERSION.php
zBmysql4-data-upgrade-0.1.0-0.1.0.php
statt benannt werdenmysql4-install-0.1.0.php
Zumindest auf Magento 1.9.3
quelle