ग्राहक पहले से ही न्यूज़लेटर के लिए सब्सक्राइब किया गया है या नहीं, इसकी जांच कैसे करें


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
मैंने इस कोड का उपयोग किया। $ ईमेल = Mage :: getSingleton ('ग्राहक / सत्र') -> getCustomer () -> getEmail (); $ ग्राहक = दाना :: getModel ('न्यूज़लेटर / ग्राहक') -> loadByEmail ($ ईमेल); $ स्थिति = $ ग्राहक-> सदस्यता प्राप्त ();
रवीसन

मैं कैसे जाँच कर सकता हूँ कि क्या अतिथि ग्राहक (ग्राहक में प्रवेश नहीं किया गया है) ने उसी ग्राहक सत्र में nesletter के लिए सदस्यता ली है।
शतीश

@ravisoni बढ़िया जवाब !!! :)
ज्रुज़फ़ा

क्या आप मुझे बता सकते हैं कि is_subscribedकौन सा टेबल सेव है या यह सत्र में सेव है
ND17

@ ND17 में एक समाचार पत्र ग्राहक की स्थिति संग्रहीत है `newsletter_subscriber`.`subscriber_status`। ध्यान दें कि आपके कॉन्फ़िगरेशन के आधार पर तालिका नाम में एक उपसर्ग हो सकता है।
डैरेन फेल्टन

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

आपके जवाब को स्वीकार किया जाना चाहिए, दूसरे को परवाह नहीं है अगर ग्राहक सदस्यता समाप्त या लंबित है
एलेक्स

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 फ़ाइल में जोड़ा है, लेकिन सदस्यता या नहीं के बारे में कुछ भी नहीं मिला।
सरफराज सिपाई

2

@ मुफ़ददल के उत्तर का विस्तार करने के लिए:

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

इस तरह से आप जाँचते हैं कि सदस्यता रिकॉर्ड मौजूद है या नहीं और सदस्यता की स्थिति सही है या नहीं।


1
यदि आप isSubscribed (का उपयोग करें) तो इसका इस्तेमाल करने की आवश्यकता नहीं$subscriberModel->getId()
अमित बेरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.