Pregunta

Tengo que comprobar si el cliente está suscrito al boletín de noticias o no. Actualmente estoy usando este código y se vuelve nada:

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

Esto no está dando nada. Cualquier idea de cómo conseguir que esto funcione?

¿Fue útil?

Solución

Como alternativa, puede probar esto, si tiene dirección de correo electrónico del cliente:

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

O si usted tiene identificador de cliente, entonces se puede comprobar directamente en newsletter_subscriber tabla para comprobar si existe o no el ID de cliente.

Otros consejos

Usted tiene que comprobar también 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;
        }
    }

En mi opinión ninguna de las respuestas anteriores son muy convenientes en el que, o bien no comprueban si el cliente está realmente suscrita o no manejan el caso en que 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();
    }
}

Para extender la respuesta de @ Mufaddal:

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

De esta manera se comprueba si el registro de suscripción está presente y si el estado de la suscripción es cierto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top