Cách kiểm tra xem khách hàng đã đăng ký nhận bản tin chưa


14

Tôi cần kiểm tra xem khách hàng có đăng ký thư tin tức hay không. Hiện tại tôi đang sử dụng mã này và nó không trả về gì cả:

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

Đây không phải là cho bất cứ điều gì. Bất kỳ ý tưởng làm thế nào để có được điều này để làm việc?

Câu trả lời:


21

Ngoài ra, bạn có thể thử điều này, nếu bạn có địa chỉ email của khách hàng:

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

Hoặc nếu bạn có ID khách hàng thì bạn có thể trực tiếp kiểm tra trong newsletter_subscriberbảng để kiểm tra xem ID khách hàng có tồn tại hay không.


3
tôi đã sử dụng mã này. $ email = Mage :: getSingleton ('khách hàng / phiên') -> getCustomer () -> getEmail (); $ thuê bao = Mage :: getModel ('bản tin / thuê bao') -> loadByEmail ($ email); $ status = $ thuê bao-> isSubscribe ();
ravisoni

làm thế nào tôi có thể kiểm tra xem một khách hàng của khách (KHÔNG đăng nhập vào khách hàng) đã đăng ký nhận bản tin, trong cùng một phiên của khách hàng.
Shathish

@ravisoni câu trả lời tuyệt vời !!! :)
jruzafa

bạn có thể cho tôi biết is_subscribedbảng nào được lưu hay nó được lưu trong phiên
ND17

@ ND17 trạng thái của một thuê bao bản tin được lưu trữ trong `newsletter_subscriber`.`subscriber_status`. Lưu ý rằng tên bảng có thể có tiền tố tùy thuộc vào cấu hình của bạn.
Darren Felton

6

Bạn cũng phải kiểm tra trạng thái đăng ký:

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

Câu trả lời của bạn phải là câu trả lời được chấp nhận, những câu trả lời khác không quan tâm nếu khách hàng không đăng ký hoặc đang chờ xử lý
Alex

4

Theo tôi, không có câu trả lời nào ở trên rất tiện lợi ở chỗ họ không kiểm tra xem khách hàng có thực sự đăng ký hay không xử lý trường hợp đăng ký không được tìm thấy, vì vậy hãy vào đây:

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

tôi đã thêm mã này vào tập tin observer.php nhưng không nhận được gì về đăng ký hay không.
Sarfaraj Sipai

2

Để mở rộng câu trả lời của @ Mufaddal:

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

Bằng cách này, bạn kiểm tra xem bản ghi đăng ký có hiện diện VÀ nếu trạng thái đăng ký là đúng.


1
nếu bạn sử dụng isSubscribeed () thì nó không bắt buộc phải sử dụng $subscriberModel->getId()
Amit Bera
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.