Come verificare se il cliente è già iscritto alla newsletter


14

Devo verificare se il cliente è iscritto o meno alla lettera di notizie. Attualmente sto usando questo codice e non restituisce nulla:

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

Questo non sta dando niente. Qualche idea su come farlo funzionare?

Risposte:


21

In alternativa puoi provare questo, se hai l'indirizzo email del cliente:

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

Oppure, se si dispone di un ID cliente, è possibile verificare direttamente la newsletter_subscribertabella per verificare se esiste un ID cliente.


3
ho usato questo codice. $ email = Mage :: getSingleton ('customer / session') -> getCustomer () -> getEmail (); $ subscriber = Mage :: getModel ('newsletter / subscriber') -> loadByEmail ($ email); $ status = $ subscriber-> isSubscribed ();
Ravisoni,

come posso verificare se un cliente ospite (cliente NON ACCESSO) si è abbonato a nesletter, nella stessa sessione cliente.
Shathish,

@ravisoni ottima risposta !!! :)
jruzafa

puoi dirmi is_subscribedè in quale tabella salvare o è salvare in sessione
ND17

@ ND17 lo stato di un abbonato alla newsletter è memorizzato in `newsletter_subscriber`.`subscriber_status`. Si noti che il nome della tabella può avere un prefisso a seconda della configurazione.
Darren Felton,

6

Devi controllare anche lo stato dell'abbonamento:

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

La tua risposta dovrebbe essere quella accettata, alle altre non importa se il cliente è disiscritto o in attesa
Alex

4

A mio avviso nessuna delle risposte sopra è molto conveniente in quanto o non controllano se il cliente è effettivamente abbonato o non gestiscono il caso in cui non è stato trovato un abbonamento, quindi ecco:

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

ho aggiunto questo codice nel file observer.php ma non ottengo nulla riguardo alla sottoscrizione o meno.
Sarfaraj Sipai,

2

Per estendere la risposta di @ Mufaddal:

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

In questo modo si controlla se il record di abbonamento è presente E se lo stato dell'abbonamento è vero.


1
se usi isSubscribed (), non è necessario utilizzarlo$subscriberModel->getId()
Amit Bera
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.