Müşterinin bültene zaten abone olup olmadığını kontrol etme


14

Müşterinin haber mektubuna abone olup olmadığını kontrol etmem gerekiyor. Şu anda bu kodu kullanıyorum ve hiçbir şey döndürmüyor:

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

Bu hiçbir şey vermiyor. Bunu nasıl çalıştıracağına dair bir fikrin var mı?

Yanıtlar:


21

Alternatif olarak, müşterinin e-posta adresiniz varsa bunu deneyebilirsiniz:

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

Veya müşteri kimliğiniz varsa, müşteri kimliğinin newsletter_subscriberolup olmadığını kontrol etmek için doğrudan tablodan kontrol edebilirsiniz.


3
Bu kodu kullandım. $ email = Mage :: getSingleton ('müşteri / oturum') -> getCustomer () -> getEmail (); $ Subscriber = Mage :: getModel ('haber bülteni / abone') -> loadByEmail ($ email); $ status = $ abone-> isSubscribed ();
ravisoni

bir konuk müşterinin (müşteriye GİRİŞ YAPMADI) aynı müşteri oturumunda nesletter için abone olup olmadığını nasıl kontrol edebilirim.
Shathish

@ravisoni harika cevap !!! :)
jruzafa

söyleyebilir misin is_subscribedhangi tablo kaydetmek veya oturumda kaydetmek
ND17

@ ND17 bülten aboneliği durumu saklanır `newsletter_subscriber`.`subscriber_status`. Yapılandırmanıza bağlı olarak tablo adının bir öneki olabileceğini unutmayın.
Darren Felton

6

Ayrıca abonelik durumunu da kontrol etmelisiniz:

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

Cevabınız kabul edilen cevap olmalı, diğeri müşterinin aboneliği iptal mi yoksa beklemede ise umursamıyor
Alex

4

Bence yukarıdaki cevapların hiçbiri müşterinin gerçekten abone olup olmadığını kontrol etmemeleri veya bir aboneliğin bulunmadığı durumu ele almamaları açısından çok uygun değildir, işte burada:

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

ben observer.php dosyasında bu kodu ekledim ama abone ya da değil hakkında bir şey alamadım.
Sarfaraj Sipai

2

@ Mufaddal'ın cevabını uzatmak için:

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

Bu şekilde abonelik kaydının olup olmadığını ve abonelik durumunun doğru olup olmadığını kontrol edersiniz.


1
isSubscribed () kullanırsanız kullanmak gerekmez$subscriberModel->getId()
Amit Bera
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.