为什么在订阅/订阅通讯订阅/订阅过程中或周围没有事件发送到客户或新闻简报模块中。Magento - 没有通讯订阅和取消订阅活动
我目前唯一的选择是使用用户模型的重写来适应这里的一些代码。
别人也有一个很好的替代方式 - 还是我失去了一些东西
为什么在订阅/订阅通讯订阅/订阅过程中或周围没有事件发送到客户或新闻简报模块中。Magento - 没有通讯订阅和取消订阅活动
我目前唯一的选择是使用用户模型的重写来适应这里的一些代码。
别人也有一个很好的替代方式 - 还是我失去了一些东西
的newsletter/subscriber
模型是从它的外观正常的Magento的模型,所以应该还是派遣从上游类的一些事件。看看newsletter_subscriber_create_after
和newsletter_subscriber_delete_after
之类的东西,以便使用一些可能的事件挂钩。
通讯MODUL钩子事件:customer_save_after
我遇到了,我需要听订阅/退订事件的情况。我遇到过这个问题,我想我会离开这里了这种解决方案的人可能需要它:
通过在config.xml中添加的观察员事件newsletter_subscriber_save_before
:
<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>
然后,您可以调用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) {
//..
}
}
所以事实证明,这很容易。这些模特活动非常强大,让您轻松完成这样的事情。无法拒绝免费功能!
为了便于参考,这里是what data the Mage_Newsletter_Model_Subscriber
model provides(1.7)
这应该是答案 – 2013-03-13 20:44:08
这不适合我1.7.02 – 2013-05-13 21:39:20
这里是只是为我工作的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>
在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;
}
甲您是否使用本地Magento订阅功能?如果你想要更高级的东西 - 使用MailChimp插件。它直接连接到API并提供更多高级功能(包括自动响应器)。 – Avisra 2011-04-29 17:48:31
如果在这种情况发生时需要引发事件,我会将类文件扩展到本地目录并添加事件调用。从那里你可以建立一个扩展,当事件被触发时被调用。 – 2011-05-01 18:50:57