回答:
または、顧客のメールアドレスがある場合は、これを試すことができます。
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
if ($subscriber->getId()) {
// put your logic here...
}
または、newsletter_subscriber
顧客IDがある場合は、表を直接チェックインして、顧客IDが存在するかどうかを確認できます。
is_subscribed
どのテーブルに保存されているのか、セッションで保存されているのかを教えてください
`newsletter_subscriber`.`subscriber_status`
ます。設定によっては、テーブル名にプレフィックスが付いている場合があります。
サブスクリプションのステータスも確認する必要があります。
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);
これにより、サブスクリプションレコードが存在するかどうか、およびサブスクリプションステータスがtrueであるかどうかを確認できます。
$subscriberModel->getId()