如何检查客户是否已订阅新闻通讯


14

我需要检查客户是否订阅了新闻快讯。目前,我正在使用此代码,但未返回任何内容:

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

这什么也没给。任何想法如何使它工作?

Answers:


21

或者,如果您有客户的电子邮件地址,也可以尝试以下操作:

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

或者,如果您有客户ID,则可以直接在newsletter_subscriber表中检查客户ID是否存在。


3
我使用了这段代码。$ email = Mage :: getSingleton('customer / session')-> getCustomer()-> getEmail(); $ subscriber = Mage :: getModel('newsletter / subscriber')-> loadByEmail($ email); $ status = $ subscriber-> isSubscribed();
ravisoni

如何在同一客户会话中检查访客客户(未登录的客户)是否已订阅嵌套邮件。
Shathish

@ravisoni好答案!!!:)
jruzafa 2014年

您能告诉我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;
        }
    }

您的答案应该是被接受的答案,其他的则不在乎客户是退订还是待定
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 '18 -10-3

2

扩展@Mufaddal的答案:

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

这样,您可以检查订阅记录是否存在以及订阅状态是否为true。


1
如果您使用isSubscribed(),则不需要使用$subscriberModel->getId()
阿米特·贝拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.