我的newsletter_subcriber表中有一个名为'is_synchronized'的自定义列。 这是一个tinyint字段,当管理员将订户同步到外部应用程序时,该字段会更改为1.
如果客户/访客取消订阅,我会使用事件'newsletter_subscriber_save_before'将值更改回0。
我可以读取订阅者的信息,但我无法更改'is_synchronized'的值。 请在我的观察员中查看以下代码
$subscriber = $observer->getEvent()->getSubscriber();
if($subscriber->getSubscriberStatus() == '3'):
$sub = Mage::getModel('newsletter/subscriber')->load(intval($subscriber->getSubscriberId()));
$sub->setIsSynchronized(0);
try{
$sub->save();
} catch(Exception $e){
Mage::log($e->getMessage());
}
endif;
有人可以告诉我为什么我无法更新订阅者吗?有更适合的活动吗?提前谢谢。
答案 0 :(得分:1)
看看@ Magento - no event for newsletter subscribe & unsubscribe
在Observer.php中:
public function subscriberSync(Varien_Event_Observer $observer)
{
$subscriber = $observer->getEvent()->getSubscriber();
if($subscriber->getSubscriberStatus() == '3'){
$subscriber->setIsSynchronized(0);
}
}
您的上述代码不起作用,因为您在观察者中保存,然后数据将被覆盖(或无限循环)。