Чтобы увидеть страницу, я хочу, чтобы пользователь подписался на нашу рассылку новостей
Я хотел бы, чтобы только подписанные пользователи/гости могли видеть содержимое страницы. Как я могу этого добиться? Я также хочу, чтобы, если вы не подписаны, появилась форма для подписки, а затем появилась возможность просматривать страницу.
2 answers
Вы можете указать, является ли клиент подписчиком или нет, используя приведенный ниже код
$subscriber = Mage::getModel('newsletter/subscriber')->loadByCustomer($customer)
;
Где $csutomer - объект клиента
Или
Получить список подписчиков, используя приведенный ниже код
$collection = Mage::getResourceSingleton('newsletter/subscriber_collection')
->showCustomerInfo(true)
->addSubscriberTypeField()
->showStoreInfo();
Или проверьте по электронной почте
$status = Mage::getModel('newsletter/subscriber')->subscribe($email);
Поместите этот код в список страниц действий вашего модуля как
if($status==1){
}
else{
/* redirect to other page */
}
Пример:
public function yourAction(){
{
//$email=email address
$status = Mage::getModel('newsletter/subscriber')->subscribe($email);
if($status!=1){
/* redirection to home page*/
$this->_redirect('*/*/');
return;
}
//other wise run your code:
}
Вам нужно создать страницу или, возможно, всплывающее окно, где вы можете получать электронную почту клиентов, и вы можете поместить следующий код в действие контроллера, где эта форма отправляет данные:
$email = $this->getRequest()->getParam('email');
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
if($subscriber->getId())
{
allow the access to site.
}
else{
$status = Mage::getModel('newsletter/subscriber')->subscribe($email);
if ($status == Mage_Newsletter_Model_Subscriber::STATUS_NOT_ACTIVE) {
Confirmation request has been sent but not confirmed yet.
restrict the access.
}else{
allow the access now.
}
}
Не проверено, но, надеюсь, это сработает. Код сначала проверит существующую подписку и подпишется, если ее еще нет.