Question

Je dois vérifier si le client est abonné à la lettre de nouvelles ou non. Actuellement, je suis en utilisant ce code et il retourne rien:

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

Cela ne donne rien. Toute idée comment obtenir ce travail?

Était-ce utile?

La solution

Sinon, vous pouvez essayer, si vous avez l'adresse e-mail du client:

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

Ou si vous avez ID client alors vous pouvez directement vérifier newsletter_subscriber table pour vérifier si ID client existe ou non.

Autres conseils

Vous devez également vérifier l'état de l'abonnement:

  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;
        }
    }

A mon avis aucune des réponses ci-dessus sont très pratique en ce qu'ils soit ne vérifient pas si le client est effectivement souscrites ou ne gèrent pas le cas où un abonnement n'a pas été trouvée, il faut en tenir:

$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();
    }
}

Pour prolonger @ réponse de Mufaddal:

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

De cette façon, vous vérifiez si l'enregistrement d'abonnement est présente et si l'état de l'abonnement est vrai.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top