Cómo verificar si el cliente ya está suscrito al boletín


14

Necesito verificar si el cliente está suscrito a una carta de noticias o no. Actualmente estoy usando este código y no devuelve nada:

if (Mage::getSingleton('customer/session')->isLoggedIn()) {
    $status = Mage::getSingleton('customer/session')->getCustomer()->getIsSubscribed();
    echo $status;
    die();
}

Esto no está dando nada. ¿Alguna idea de cómo hacer que esto funcione?

Respuestas:


21

Alternativamente, puede intentar esto, si tiene la dirección de correo electrónico del cliente:

$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
if ($subscriber->getId()) {
     // put your logic here...
}

O si tiene una identificación de cliente, puede verificar directamente en la newsletter_subscribertabla para verificar si existe o no.


3
utilicé este código. $ email = Mage :: getSingleton ('cliente / sesión') -> getCustomer () -> getEmail (); $ suscriptor = Mage :: getModel ('boletín / suscriptor') -> loadByEmail ($ correo electrónico); $ status = $ suscriptor-> isSubscriptions ();
ravisoni

¿Cómo puedo comprobar si un cliente invitado (cliente NO INICIADO SESIÓN) se ha suscrito a nesletter, en la misma sesión de cliente.
Shathish

@ravisoni gran respuesta !!! :)
jruzafa

¿Me puede decir is_subscribeden qué tabla guardar o guardar en sesión
ND17

@ ND17 se almacena el estado de un suscriptor del boletín `newsletter_subscriber`.`subscriber_status`. Tenga en cuenta que el nombre de la tabla puede tener un prefijo dependiendo de su configuración.
Darren Felton el

6

También debe verificar el estado de la suscripción:

  if(Mage::getSingleton('customer/session')->isLoggedIn()){
        $email = Mage::getSingleton('customer/session')->getCustomer()->getData('email');
        $subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
        if($subscriber->getId())
        {
            $isSubscribed = $subscriber->getData('subscriber_status') == Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED;
        }
    }

Su respuesta debe ser la aceptada, a los demás no les importa si el cliente está anulado o pendiente de suscripción
Alex

4

En mi opinión, ninguna de las respuestas anteriores es muy conveniente porque no comprueban si el cliente está realmente suscrito o no manejan el caso donde no se ha encontrado una suscripción, así que aquí va:

$customerIsSubscribed = false;
$customer = Mage::getSingleton('customer/session')->getCustomer();
if ($customer) {
    $customerEmail = $customer->getEmail();
    $subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($customerEmail);
    if ($subscriber) {
        $customerIsSubscribed = $subscriber->isSubscribed();
    }
}

He agregado este código en el archivo observer.php pero no obtengo nada sobre suscribirse o no.
Sarfaraj Sipai

2

Para extender la respuesta de @ Mufaddal:

$subscriberModel = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
$subbed = ($subscriberModel->isSubscribed() ? true : false);

De esta manera, verifica si el registro de suscripción está presente Y si el estado de la suscripción es verdadero.


1
si usa isSubscriptions (), entonces no es necesario usarlo$subscriberModel->getId()
Amit Bera
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.