Potrzebujemy prostego sposobu dodania atrybutu do rekordu klienta, który nie może być edytowany przez klienta lub administratora, tylko programowo. Zasadniczo mamy witrynę ExpressionEngine połączoną z Magento.
Uwierzytelniamy za pośrednictwem usługi internetowej i chcielibyśmy przechowywać część JSON, którą otrzymujemy z uwierzytelnienia, do rejestru klienta i aktualizować go przy każdym logowaniu.
Będziemy również wymagać modyfikacji danych, jeśli zmienią one informacje w procesie realizacji transakcji, takie jak adres wysyłki. Następnie wyślemy dane z powrotem do naszego serwisu internetowego, ponieważ obecnie robimy to przy każdym zamówieniu.
Czy jest to trudne, ponieważ teraz przechowujemy trochę JSON na każdym produkcie za pomocą niestandardowego atrybutu z rozszerzeniem MageWorx Custom Options?
Użyłem tutaj Online Module Creator http://www.silksoftware.com/magento-module-creator/, ale nie jestem pewien, jak zmodyfikować lub pobrać wartość po zainstalowaniu modułu.
Gdzie mogę się dowiedzieć, jak napisać rozszerzenie, aby to zrobić?
customer_entity
tabeli, musisz dodać kolumnę do tabeli, aw skrypcie, który dodaje atrybut (patrz moja odpowiedź poniżej), zastąp typ odvarchar
nastatic
.customer_entity
tabeli. A mój atrybut jest typu „wybierz”. Chcę zapisać moją wartość atrybutu bezpośrednio w tej „kolumnie niestandardowej” wcustomer_entity
tabeli. Jak to zrobić?Odpowiedzi:
/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
Następnie do pobierania lub edycji używasz:
Będziesz musiał utworzyć obserwatorów zdarzeń dla zdarzenia logowania, odpowiedź tutaj: Jak mogę uzyskać dane klienta od obserwatora po udanym zalogowaniu?
a także prawdopodobnych obserwatorów dla klienta_zapisz_w przypadku, gdyby zmienili swój adres na koncie mgmt, i jednego dla oferty, który może znajdować się w różnych miejscach w zależności od tego, czego szukasz.
źródło
Istnieje wiele niestandardowych funkcji, które musisz stworzyć jako niestandardowy moduł zastępujący klasy i łączący się ze zdarzeniami, w których chcesz, aby dane były przekazywane do usługi internetowej. Jeśli chodzi o atrybut, po utworzeniu niestandardowego modułu i zdefiniowaniu zasobu konfiguracyjnego dla niego w module,
config.xml
tak jak w powyższym samouczku, w skrypcie instalacyjnym można wykonać następujące czynności:[ścieżka_modułu] / sql / [nazwa_węzła_zasobu_w_konfiguracji_xml] / mysql4-install- [numer_wersji modułu] .php
user_defined
system
ustawia atrybut jako atrybut, jeśli jest ustawiony na0
, co wyłącza możliwość usunięcia go z administratora.źródło
Po wielu debugowaniu rdzenia dowiedziałem się, że magento oczekuje, że plik będzie zawierał dane / nazwa_instalacji_nazwa_modulu / lub sql / nazwa_instalacji_modulu_modulu / .
I trzeba to nazwać
mysql4-data-upgrade-OLDVERSION-NEWVERSION.php
np.mysql4-data-upgrade-0.1.0-0.1.0.php
Zamiastmysql4-install-0.1.0.php
Przynajmniej na Magento 1.9.3
źródło