So prüfen Sie, ob der Kunde den Newsletter bereits abonniert hat

14

Ich muss prüfen, ob der Kunde den Newsletter abonniert hat oder nicht. Derzeit verwende ich diesen Code und er gibt nichts zurück:

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

Das gibt nichts. Irgendeine Idee, wie man das zum Laufen bringt?

Ravisoni
quelle

Antworten:

21

Alternativ können Sie dies versuchen, wenn Sie die E-Mail-Adresse des Kunden haben:

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

Wenn Sie eine Kunden-ID haben, können Sie direkt in der newsletter_subscriberTabelle nachsehen, ob eine Kunden-ID vorhanden ist oder nicht.

Mufaddal
quelle
3
Ich habe diesen Code benutzt. $ email = Mage :: getSingleton ('customer / session') -> getCustomer () -> getEmail (); $ subscriber = Mage :: getModel ('Newsletter / Abonnent') -> loadByEmail ($ email); $ status = $ subscriber-> isSubscribed ();
Ravisoni
Wie kann ich überprüfen, ob ein Gastkunde (nicht eingeloggt) in derselben Kundensitzung den Newsletter abonniert hat?
Shathish
@ Ravisoni tolle Antwort !!! :)
jruzafa
is_subscribed
Kannst
@ ND17 Der Status eines Newsletter-Abonnenten wird in gespeichert `newsletter_subscriber`.`subscriber_status`. Beachten Sie, dass der Tabellenname je nach Konfiguration ein Präfix haben kann.
Darren Felton
6

Sie müssen auch den Abonnementstatus überprüfen:

  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;
        }
    }
Babarus George
quelle
Ihre Antwort sollte die akzeptierte sein, den anderen ist es egal, ob der Kunde abgemeldet ist oder ansteht
Alex
4

Meiner Meinung nach ist keine der obigen Antworten sehr praktisch, da sie entweder nicht prüfen, ob der Kunde tatsächlich abonniert ist, oder den Fall, dass kein Abonnement gefunden wurde, nicht behandeln.

$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();
    }
}
Louis B.
quelle
Ich habe diesen Code in der Datei observer.php hinzugefügt, erhalte aber keine Informationen zum Abonnieren oder nicht.
Sarfaraj Sipai
2

Um die Antwort von @ Mufaddal zu erweitern:

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

Auf diese Weise prüfen Sie, ob der Abonnementdatensatz vorhanden ist UND ob der Abonnementstatus wahr ist.

Timon de Groot
quelle
1
wenn Sie IsSubscribed () verwenden , dann erfordert es nicht zu benutzen$subscriberModel->getId()
Amit Bera