2011-04-29 194 views
6

为什么在订阅/订阅通讯订阅/订阅过程中或周围没有事件发送到客户或新闻简报模块中。Magento - 没有通讯订阅和取消订阅活动

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

别人也有一个很好的替代方式 - 还是我失去了一些东西

+0

甲您是否使用本地Magento订阅功能?如果你想要更高级的东西 - 使用MailChimp插件。它直接连接到API并提供更多高级功能(包括自动响应器)。 – Avisra 2011-04-29 17:48:31

+0

如果在这种情况发生时需要引发事件,我会将类文件扩展到本地目录并添加事件调用。从那里你可以建立一个扩展,当事件被触发时被调用。 – 2011-05-01 18:50:57

回答

6

newsletter/subscriber模型是从它的外观正常的Magento的模型,所以应该还是派遣从上游类的一些事件。看看newsletter_subscriber_create_afternewsletter_subscriber_delete_after之类的东西,以便使用一些可能的事件挂钩。

0

通讯MODUL钩子事件:customer_save_after

10

我遇到了,我需要听订阅/退订事件的情况。我遇到过这个问题,我想我会离开这里了这种解决方案的人可能需要它:

通过在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

这应该是答案 – 2013-03-13 20:44:08

+0

这不适合我1.7.02 – 2013-05-13 21:39:20

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