顧客が既にニュースレターを購読しているかどうかを確認する方法


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顧客IDがある場合は、表を直接チェックインして、顧客IDが存在するかどうかを確認できます。


3
このコードを使用しました。$ email = Mage :: getSingleton( 'customer / session')-> getCustomer()-> getEmail(); $ subscriber = Mage :: getModel( 'newsletter / subscriber')-> loadByEmail($ email); $ status = $ subscriber-> isSubscribed();
-ravisoni

同じ顧客セッションで、ゲスト顧客(顧客にログインしていない)がnesletterを購読しているかどうかを確認するにはどうすればよいですか。
シャシッシュ

@ravisoni素晴らしい答え!!! :)
jruzafa 14年

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

@Mufaddalの答えを拡張するには:

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

これにより、サブスクリプションレコードが存在するかどうか、およびサブスクリプションステータスがtrueであるかどうかを確認できます。


1
あなたがisSubscribed()を使用している場合、それは使用する必要はない$subscriberModel->getId()
アミットベラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.