Aunque no es lo más recomendable si queremos reutilizar el proceso, o si queremos proporcionar un método de actualización de los suscriptores de Magento mediante un archivo csv o similar, para un caso puntual de importación de suscriptores, el acceso directo a la base de datos, puede ser la opción más sencilla.
La lista de suscriptores a la newsletter de Magento se encuentran almacenados en la tabla mage_newsletter_subscriber de la base de datos de magento.
Dicha tabla tiene los siguientes campos:
- subscriber_id. Un autoincremental que no tendremos que tener en cuenta en este caso.
- store_id. El identificador de la tienda para la que queremos importar el suscriptor. Si tenemos varias tiendas y queremos suscribir al usuario a varias, tendremos que incluir tantos registros como tiendas necesitemos, cada una con su identificador.
- change_status_at. Es la última fecha en la que el estado del suscriptor cambia. Tampoco será necesario en este caso.
- customer_id. Identificador del cliente en Magento. Si estamos importando suscriptores cuyo email ya pertenezca a uno de nuestros clientes, necesitaremos incluir aquí el identificador del cliente. Si no, dicho cliente no podrá actualizar el estado de su suscripción desde la cuenta de usuario.
- subscriber_email. Email del suscriptor.
- subscriber_status. El estado de la suscripción. Normalmente deberemos incluir un «1» en este campo, si estamos importando suscriptores, pero abajo incluyo la relación de códigos posibles.
- subscriber_confirm_code. Es el código que se envía cuando se solicita la confirmación del suscriptor. No lo utilizaremos en este caso.
En la clase Mage_Newsletter_Model_Subscriber encontramos los estados posibles del suscriptor. Normalmente utilizaremos un «1» si estamos importando suscriptores.
- const STATUS_SUBSCRIBED = 1;
- const STATUS_NOT_ACTIVE = 2;
- const STATUS_UNSUBSCRIBED = 3;
- const STATUS_UNCONFIRMED = 4;
Si lo creamos directamente a la base de datos, sólo necesitaremos la siguiente consulta para cada suscriptor:
INSERT INTO newsletter_subscriber ( 'store_id', 'change_status_at', 'customer_id', 'subscriber_email', 'subscriber_status', 'subscriber_confirm_code') VALUES ( 1, 1, NULL, 0, 'direccion-email@dominio.com', 1, '');
Daniel, en la lista de suscriptores de mi tienda magento no me aparece la fecha en la que cada suscriptor hizo su suscripción. Podrías indicarme por qué ocurre esto y si es posible solucionarlo.