Precisamos de uma maneira simples de adicionar um atributo a um registro do cliente que não seja editável pelo cliente ou administrador, apenas programaticamente. Basicamente, temos um site ExpressionEngine juntamente com o Magento.
Nós autenticamos via webservice e gostaríamos de armazenar alguns JSON que recuperamos da autenticação no registro do cliente e atualizá-lo sempre que eles fizerem login.
Também queremos que os dados sejam modificados se eles mudarem as informações no processo de checkout, como endereço de entrega. Em seguida, enviaremos os dados de volta ao nosso serviço da Web, como fazemos atualmente em cada pedido.
Isso é difícil, pois agora estamos armazenando algum JSON em cada produto usando um atributo personalizado com a extensão Opções personalizadas do MageWorx?
Usei o Online Module Creator aqui http://www.silksoftware.com/magento-module-creator/, mas não sei como modificar ou recuperar o valor depois que o módulo estiver instalado.
Onde eu poderia aprender a escrever uma extensão para fazer isso?
customer_entity
tabela, precisará adicionar a coluna à tabela e no script que adiciona o atributo (veja minha resposta abaixo) substitua o tipo devarchar
porstatic
.customer_entity
tabela. E meu atributo é do tipo 'select'. Quero salvar meu valor de atributo diretamente neste 'custom_column' nacustomer_entity
tabela. Como fazer isso?Respostas:
/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
Para recuperar ou editar, use:
Você precisará criar observadores de eventos para o evento de login, respondidos aqui: Como posso obter dados do cliente do observador após o login bem-sucedido?
e também observadores prováveis para o customer_save_after, caso eles alterem seu endereço na conta mgmt e um para a cotação, que pode estar em lugares diferentes, dependendo do que você procura.
fonte
Há muitas funcionalidades personalizadas que você precisará criar como módulo customizado, substituindo classes e conectando-se a eventos nos quais você deseja que os dados sejam passados para o serviço da web. Quanto ao atributo, quando você cria seu módulo personalizado e define um recurso de configuração para ele no módulo,
config.xml
como no tutorial acima, no script de instalação, você pode fazer algo assim:[path_path] / sql / [resource_node_defined_in_config_xml] / mysql4-install- [module_version_number] .php
user_defined
torna o atributo umsystem
atributo se definido como0
, o que desativa a capacidade de excluí-lo do administrador.fonte
Após muita depuração do núcleo, descobri que o magento espera que o arquivo esteja em data / Companyname_Modulname_setup / ou em sql / Companyname_Modulname_setup / .
E deve ser nomeado,
mysql4-data-upgrade-OLDVERSION-NEWVERSION.php
por exemplo, emmysql4-data-upgrade-0.1.0-0.1.0.php
vez demysql4-install-0.1.0.php
Pelo menos no Magento 1.9.3
fonte