Cómo comprobar si el cliente ya está suscrito al boletín
-
16-10-2019 - |
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?
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.