为什么在客户或新闻稿模块中没有在简报订阅/取消订阅过程中或周围发送任何事件.
我目前面临的唯一选择是使用重写用户模型来适应这里的一些代码.
有没有其他人有一个很好的替代品 - 或者我错过了什么
Jos*_*ort 11
我遇到了需要监听订阅/取消订阅事件的情况.我遇到了这个问题,并认为我会在这里为任何可能需要它的人留下这个解决方案:
通过newsletter_subscriber_save_before在config.xml中向事件添加观察者:
<global>
....
<events>
....
<newsletter_subscriber_save_before>
<observers>
<your_unique_event_name>
<class>yourgroupname/observer</class>
<method>newsletterSubscriberChange</method>
</your_unique_event_name>
</observers>
</newsletter_subscriber_save_before>
</events>
</global>
Run Code Online (Sandbox Code Playgroud)
然后,您可以在观察者中调用getSubscriber()(在上下文中$observer->getEvent()查看下一个代码块)以获取Mage_Newsletter_Model_Subscriber允许您获取有关订户的数据的模型.这适用于订阅和取消订阅的发生.
public function newsletterSubscriberChange(Varien_Event_Observer $observer) {
$subscriber = $observer->getEvent()->getSubscriber();
//now do whatever you want to do with the $subscriber
//for example
if($subscriber->isSubscribed()) {
//...
}
//or
if($subscriber->getStatus() == Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED) {
//...
} elseif($subscriber->getStatus() == Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED) {
//..
}
}
Run Code Online (Sandbox Code Playgroud)
事实证明这很容易.这些模型事件非常强大,让你可以轻松地完成这样的事情.无法拒绝免费功能!
为了快速参考,这里是模型提供的数据Mage_Newsletter_Model_Subscriber(1.7)
Ira*_*man 11
这是1.7.0.2对我有用的东西.我知道这个帖子已经老了,但是在这里发帖以防它可以帮助任何人(因为那里没有关于这个事件的大量信息):
*注意:将myco_myextension替换为您的扩展程序的唯一名称:*
在config.xml中:
<newsletter_subscriber_save_commit_after>
<observers>
<myco_myextension_model_observer>
<class>Myco_Myextension_Model_Observer</class>
<method>subscribedToNewsletter</method>
</myco_myextension_model_observer>
</observers>
</newsletter_subscriber_save_commit_after>
Run Code Online (Sandbox Code Playgroud)
在Observer.php中:
public function subscribedToNewsletter(Varien_Event_Observer $observer)
{
$event = $observer->getEvent();
$subscriber = $event->getDataObject();
$data = $subscriber->getData();
$statusChange = $subscriber->getIsStatusChanged();
// Trigger if user is now subscribed and there has been a status change:
if ($data['subscriber_status'] == "1" && $statusChange == true) {
// Insert your code here
}
return $observer;
}
Run Code Online (Sandbox Code Playgroud)
newsletter/subscriber从它的外观来看,该模型是一个普通的Magento模型,因此它仍然应该从上游类中调度一些事件.看一下类似的东西,newsletter_subscriber_create_after并newsletter_subscriber_delete_after使用一些可能的事件钩子.
| 归档时间: |
|
| 查看次数: |
8549 次 |
| 最近记录: |