고객이 이미 뉴스 레터를 구독하고 있는지 확인하는 방법


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 = 마법사 :: getModel ( 'newsletter / subscriber')-> loadByEmail ($ email); $ status = $ subscriber-> isSubscribed ();
ravisoni

게스트 고객 (고객이 아님)이 동일한 고객 세션에서 nesletter를 구독했는지 여부를 어떻게 확인할 수 있습니까?
Shathish 2016 년

트윗 담아 가기 :)
jruzafa

당신은 내게 말할 수 is_subscribed있다 저장하는 테이블 또는 세션에서 저장을하다
ND17

@ ND17 뉴스 레터 구독자의 상태는에 저장됩니다 `newsletter_subscriber`.`subscriber_status`. 테이블 이름은 구성에 따라 접두사를 가질 수 있습니다.
Darren Felton

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

2

@Mufaddal의 답변을 확장하려면 :

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

이 방법으로 구독 레코드가 있고 구독 상태가 true인지 확인합니다.


1
당신이 isSubscribed ()를 사용하는 경우 다음 사용을 필요로하지$subscriberModel->getId()
Amit Bera
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.