Magento - 没有新闻通讯订阅和取消订阅的活动

Dav*_*vid 7 magento

为什么在客户或新闻稿模块中没有在简报订阅/取消订阅过程中或周围发送任何事件.

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

有没有其他人有一个很好的替代品 - 或者我错过了什么

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)


Jos*_*tey 6

newsletter/subscriber从它的外观来看,该模型是一个普通的Magento模型,因此它仍然应该从上游类中调度一些事件.看一下类似的东西,newsletter_subscriber_create_afternewsletter_subscriber_delete_after使用一些可能的事件钩子.