如何检查客户是否已经订阅了新闻通讯
-
16-10-2019 - |
题
我需要检查客户是否已订阅新闻信。目前,我正在使用此代码,它没有返回:
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
$status = Mage::getSingleton('customer/session')->getCustomer()->getIsSubscribed();
echo $status;
die();
}
这没有给任何东西。有什么想法如何使它起作用?
解决方案
另外,如果您有客户的电子邮件地址:
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
if ($subscriber->getId()) {
// put your logic here...
}
或者,如果您有客户ID,则可以直接检查 newsletter_subscriber
表以检查客户ID是否存在。
其他提示
您还必须检查订阅状态:
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;
}
}
我认为以上所有答案都不是很方便的,因为它们要么不检查客户是否实际订阅,要么没有处理尚未找到订阅的情况,所以这里是:
$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();
}
}
扩展 @Mufaddal的答案:
$subscriberModel = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
$subbed = ($subscriberModel->isSubscribed() ? true : false);
这样,您检查是否存在订阅记录以及订阅状态是否为真。