วิธีตรวจสอบว่าลูกค้าสมัครรับจดหมายข่าวอยู่แล้ว


14

ฉันต้องตรวจสอบว่าลูกค้าสมัครรับจดหมายข่าวหรือไม่ ขณะนี้ฉันกำลังใช้รหัสนี้และไม่มีอะไรคืนมา:

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

นี่ไม่ได้ให้อะไรเลย มีความคิดว่าจะทำให้เรื่องนี้ทำงานอย่างไร?

คำตอบ:


21

หรือคุณสามารถลองทำสิ่งนี้หากคุณมีที่อยู่อีเมลของลูกค้า:

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

หรือถ้าคุณมีรหัสลูกค้าคุณสามารถเช็คอินnewsletter_subscriberตารางโดยตรงเพื่อตรวจสอบว่ามีรหัสลูกค้าหรือไม่


3
ฉันใช้รหัสนี้ $ email = ผู้วิเศษ :: getSingleton ('ลูกค้า / เซสชั่น') -> getCustomer () -> getEmail (); $ subscriber = Mage :: getModel ('จดหมายข่าว / สมาชิก') -> loadByEmail ($ email); $ status = $ subscriber-> isSubscribeed ();
ravisoni

ฉันจะตรวจสอบได้อย่างไรว่าลูกค้าผู้มาเยือน (ไม่ได้ลงชื่อเข้าใช้ในลูกค้า) ได้สมัครรับจดหมายข่าวในช่วงลูกค้าเดียวกัน
Shathish

@ravisoni คำตอบที่ดี !!! :)
jruzafa

คุณบอกฉันได้ไหมis_subscribedว่าตารางใดที่บันทึกไว้หรือบันทึกในเซสชั่น
ND17

@ ND17 `newsletter_subscriber`.`subscriber_status`สถานะของการเป็นสมาชิกจดหมายข่าวจะถูกเก็บไว้ใน โปรดทราบว่าชื่อตารางอาจมีคำนำหน้าขึ้นอยู่กับการกำหนดค่าของคุณ
Darren Felton

6

คุณต้องตรวจสอบสถานะการสมัครสมาชิกด้วย:

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

คำตอบของคุณควรเป็นคำตอบที่ได้รับการยอมรับส่วนอีกคนไม่สนใจว่าลูกค้ายกเลิกการเป็นสมาชิกหรืออยู่ระหว่างดำเนินการ
Alex

4

ในความคิดของฉันไม่มีคำตอบข้างต้นจะสะดวกมากที่พวกเขาไม่ได้ตรวจสอบว่าลูกค้าเป็นสมาชิกจริงหรือไม่จัดการกรณีที่ไม่พบการสมัครสมาชิกดังนั้นที่นี่ไป:

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

ฉันได้เพิ่มรหัสนี้ในไฟล์ observer.php แต่ไม่ได้รับอะไรเกี่ยวกับการสมัครสมาชิกหรือไม่
Sarfaraj Sipai

2

หากต้องการขยายคำตอบของ @ Mufaddal:

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

วิธีนี้คุณจะตรวจสอบว่ามีการบันทึกการสมัครสมาชิกและถ้าสถานะการสมัครสมาชิกเป็นจริง


1
ถ้าคุณใช้ isSubscribeed () ก็ไม่จำเป็นต้องใช้$subscriberModel->getId()
Amit Bera
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.