Нам нужен простой способ добавить атрибут в запись клиента, который не может быть изменен клиентом или администратором, только программно. По сути, у нас есть сайт ExpressionEngine в сочетании с Magento.
Мы выполняем аутентификацию через веб-сервис и хотели бы сохранить некоторые данные JSON, которые мы получаем от аутентификации, в записи клиента и обновлять его при каждом входе в систему.
Мы также хотим, чтобы данные были изменены, если они изменяют информацию в процессе оформления заказа, например, адрес доставки. Затем мы отправим данные обратно в наш веб-сервис, как мы делаем это с каждым заказом.
Сложно ли это сделать, поскольку сейчас мы храним некоторые JSON для каждого продукта, используя пользовательский атрибут с расширением пользовательских параметров MageWorx?
Я использовал Создателя онлайн-модуля здесь http://www.silksoftware.com/magento-module-creator/, но не уверен, как изменить или получить значение после установки модуля.
Где я могу узнать, как написать расширение для этого?
customer_entity
таблице, вам нужно добавить столбец в таблицу и в скрипте, который добавляет атрибут (см. Мой ответ ниже), заменить тип сvarchar
наstatic
.customer_entity
таблице. И мой атрибут имеет тип «выбрать». Я хочу сохранить значение моего атрибута непосредственно в этом «custom_column» вcustomer_entity
таблице. Как это сделать?Ответы:
/app/code/local/Your/Customattribute/sql/your_customattribute_setup/install-0.1.0.php
/app/code/local/Your/Customattribute/etc/config.xml
приложение / и т.д. / модули / Your_Customattribute.xml
Затем для извлечения или редактирования вы используете:
Вам нужно будет создать наблюдателей событий для события входа в систему, ответьте здесь: Как я могу получить данные клиента от наблюдателя после успешного входа в систему?
а также, вероятно, наблюдатели для customer_save_after в случае, если они изменят свой адрес в учетной записи mgmt, и один для цитаты, которая может быть в разных местах в зависимости от того, что вы собираетесь.
источник
Существует множество пользовательских функций, которые вы должны будете создавать самостоятельно, переопределяя классы пользовательских модулей и подключаясь к событиям, когда вы хотите, чтобы данные передавались в ваш веб-сервис. Что касается атрибута, когда вы создаете свой пользовательский модуль и определяете для него ресурс установки в модуле,
config.xml
как в учебном руководстве выше, то в вашем скрипте установки вы можете сделать что-то вроде этого:[Module_path] / SQL / [resource_node_defined_in_config_xml] / MySQL4-install- [module_version_number] .php
user_defined
делает атрибутsystem
атрибутом, если он установлен на0
, что отключает возможность его удаления от администратора.источник
После многих отладок ядра я обнаружил, что magento ожидает, что файл будет либо в data / Companyname_Modulname_setup /, либо в sql / Companyname_Modulname_setup / .
И это должно быть названо,
mysql4-data-upgrade-OLDVERSION-NEWVERSION.php
например,mysql4-data-upgrade-0.1.0-0.1.0.php
вместоmysql4-install-0.1.0.php
По крайней мере, на Magento 1.9.3
источник