Magento - 没有订阅时事通讯的活动退订

时间:2011-04-29 17:13:22

标签: magento

为什么客户或简报模块中的简报订阅/取消订阅流程上或附近都没有发送任何事件。

目前我面临的唯一选择是对订户模型使用重写以适应这里的一些代码。

有没有其他人可以替代这个 - 或者我错过了什么

4 个答案:

答案 0 :(得分:11)

我遇到了需要监听订阅/取消订阅事件的情况。我遇到了这个问题,并认为我会在这里为任何可能需要它的人留下这个解决方案:

通过向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)

答案 1 :(得分: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>

在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;
}

答案 2 :(得分:6)

newsletter/subscriber模型从它的外观来看是一个正常的Magento模型,所以它仍然应该从上游类调度一些事件。查看newsletter_subscriber_create_afternewsletter_subscriber_delete_after之类的内容,了解一些可能使用的事件挂钩。

答案 3 :(得分:0)

新闻稿模块挂钩到事件:customer_save_after