Necesitamos una manera simple de agregar un atributo a un registro de cliente que no sea editable por el cliente o el administrador, solo programáticamente. Esencialmente, tenemos un sitio ExpressionEngine junto con Magento.
Nos autenticamos a través del servicio web y nos gustaría almacenar algunos JSON que recuperamos de la autenticación en el registro del cliente y actualizarlos cada vez que inician sesión.
También queremos que se modifiquen los datos si cambian la información en el proceso de pago, como la dirección de envío. Luego enviaremos los datos de vuelta a nuestro servicio web como lo hacemos actualmente con cada pedido.
¿Es difícil hacerlo ya que ahora estamos almacenando algo de JSON en cada producto usando un atributo personalizado con la extensión de Opciones personalizadas de MageWorx?
Utilicé el Creador de módulos en línea aquí http://www.silksoftware.com/magento-module-creator/ pero no estoy seguro de cómo modificar o recuperar el valor una vez que el módulo está instalado.
¿Dónde podría aprender a escribir una extensión para hacer esto?
customer_entity
tabla, debe agregar la columna a la tabla y en el script que agrega el atributo (vea mi respuesta a continuación) reemplace el tipo devarchar
astatic
.customer_entity
tabla. Y mi atributo es de tipo 'select'. Quiero guardar mi valor de atributo directamente en esta 'columna personalizada' en lacustomer_entity
tabla. ¿Como hacer eso?Respuestas:
/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
Luego, para recuperar o editar, usa:
Tendrá que crear observadores de eventos para el evento de inicio de sesión, respondido aquí: ¿Cómo puedo obtener los datos del cliente del observador después de un inicio de sesión exitoso?
y también observadores probables para customer_save_after en caso de que alteren su dirección en la cuenta de administración, y uno para la cotización, que podría estar en diferentes lugares dependiendo de lo que esté buscando.
fuente
Hay una gran cantidad de funcionalidades personalizadas que tendrá que crear usted mismo como clases personalizadas que anulan las clases y se conectan a los eventos donde desea que los datos pasen a su servicio web. En lo que respecta al atributo, cuando crea su módulo personalizado y define un recurso de configuración para él en el módulo
config.xml
como en el tutorial anterior, luego en su script de instalación puede hacer algo como esto:[module_path] / sql / [resource_node_defined_in_config_xml] / mysql4-install- [module_version_number] .php
user_defined
convierte el atributo en unsystem
atributo si se establece en0
, lo que deshabilita la capacidad de eliminarlo del administrador.fuente
Después de una gran cantidad de depuración del núcleo descubrí que magento espera que el archivo esté en datos / Companyname_Modulname_setup / o en sql / Companyname_Modulname_setup / .
Y tiene que ser nombrado,
mysql4-data-upgrade-OLDVERSION-NEWVERSION.php
por ejemplo, enmysql4-data-upgrade-0.1.0-0.1.0.php
lugar demysql4-install-0.1.0.php
Al menos en Magento 1.9.3
fuente