Magento - нет события для подписки на рассылку и отписаться - PullRequest
7 голосов
/ 29 апреля 2011

Почему в процессе подписки / отмены подписки на новостные рассылки не происходит ни событий, ни модулей клиента или новостной рассылки.

Единственная альтернатива, с которой я сталкиваюсь в данный момент, - это использовать перезапись длямодель подписчика, чтобы разместить здесь какой-то код.

У кого-нибудь есть хорошая альтернатива этому или я что-то упустил

Ответы [ 4 ]

11 голосов
/ 14 мая 2013

Вот что у меня сработало на 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;
}
11 голосов
/ 20 октября 2012

Я столкнулся с ситуацией, когда мне нужно было прослушивать события подписки / отмены подписки.Я столкнулся с этим вопросом и подумал, что оставлю это решение здесь для всех, кому оно может понадобиться:

Добавив наблюдателя к событию 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>

Затем вы можете вызвать 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) {
        //..
    }

}

Так что оказывается, что это действительно легко.Эти модельные события очень мощные и позволяют вам делать такие вещи очень легко.Не могу отключить бесплатную функциональность!

Для краткого справочника, вот , какие данные предоставляет модель Mage_Newsletter_Model_Subscriber (1.7)

6 голосов
/ 29 апреля 2011

Модель newsletter/subscriber является обычной моделью Magento, так что она все равно должна отправлять некоторые события из вышестоящих классов. Взгляните на что-то вроде newsletter_subscriber_create_after и newsletter_subscriber_delete_after, чтобы узнать о некоторых возможных перехватах событий.

0 голосов
/ 19 июля 2012

модуль рассылки перехватывает событие: customer_save_after

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...