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?

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.


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

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

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.


1
wenn Sie IsSubscribed () verwenden , dann erfordert es nicht zu benutzen$subscriberModel->getId()
Amit Bera
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.