Cara memeriksa apakah pelanggan sudah berlangganan buletin

14

Saya perlu memeriksa apakah pelanggan berlangganan surat kabar atau tidak. Saat ini saya menggunakan kode ini dan tidak mengembalikan apa pun:

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

Ini tidak memberi apa-apa. Adakah cara untuk membuatnya berfungsi?

ravisoni
sumber

Jawaban:

21

Atau Anda dapat mencoba ini, jika Anda memiliki alamat email pelanggan:

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

Atau jika Anda memiliki ID pelanggan maka Anda dapat langsung check in newsletter_subscribertable untuk memeriksa apakah ID pelanggan ada atau tidak.

Mufaddal
sumber
3
saya menggunakan kode ini. $ email = Mage :: getSingleton ('customer / session') -> getCustomer () -> getEmail (); $ subscriber = Mage :: getModel ('newsletter / subscriber') -> loadByEmail ($ email); $ status = $ subscriber-> isSubscribed ();
ravisoni
bagaimana saya bisa memeriksa apakah pelanggan tamu (BUKAN pelanggan MASUK) telah berlangganan nesletter, di sesi pelanggan yang sama.
Shathish
@ravisoni jawaban yang bagus !!! :)
jruzafa
dapatkah Anda memberi tahu saya is_subscribedbahwa tabel disimpan atau disimpan dalam sesi
ND17
@ ND17 status pelanggan buletin disimpan di `newsletter_subscriber`.`subscriber_status`. Perhatikan bahwa nama tabel mungkin memiliki awalan tergantung pada konfigurasi Anda.
Darren Felton
6

Anda harus memeriksa juga status berlangganan:

  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
sumber
Jawaban Anda harus yang diterima, yang lain tidak peduli jika pelanggan berhenti berlangganan atau tertunda
Alex
4

Menurut pendapat saya tidak ada jawaban di atas yang sangat nyaman karena mereka tidak memeriksa apakah pelanggan benar-benar berlangganan atau tidak menangani kasus di mana langganan belum ditemukan, jadi begini:

$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.
sumber
Saya telah menambahkan kode ini dalam file observer.php tetapi tidak mendapatkan apa-apa tentang berlangganan atau tidak.
Sarfaraj Sipai
2

Untuk memperluas jawaban @ Mufaddal:

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

Dengan cara ini Anda memeriksa apakah ada catatan berlangganan DAN apakah status berlangganan benar.

Timon de Groot
sumber
1
jika Anda menggunakan isSubscribed () maka tidak perlu menggunakan$subscriberModel->getId()
Amit Bera