2011-04-29 14 views
6

ग्राहक या न्यूज़लेटर मॉड्यूल में न्यूज़लेटर सदस्यता/गैर-सदस्यता प्रक्रिया के आसपास या उसके आसपास प्रेषित कोई ईवेंट क्यों नहीं है।Magento - न्यूज़लेटर सदस्यता लेने और सदस्यता समाप्त करने के लिए कोई ईवेंट

इस समय का एकमात्र विकल्प मुझे सामना करना पड़ रहा है, ग्राहक मॉडल के लिए एक पुनः लिखने का उपयोग यहां के आसपास कुछ कोड फिट करने के लिए करना है।

किसी और को यह करने के लिए एक अच्छा विकल्प है - या मैं कुछ

+0

एक क्या आप देशी Magento सदस्यता कार्यक्षमता का उपयोग कर रहे हैं? यदि आप कुछ और अधिक उन्नत चाहते हैं - MailChimp प्लगइन का उपयोग करें। यह सीधे एपीआई से जुड़ता है और बहुत अधिक उन्नत कार्यक्षमता प्रदान करता है (ऑटो उत्तरदाताओं सहित)। – Avisra

+0

यदि ऐसा होता है तो आपको फेंकने के लिए किसी ईवेंट की आवश्यकता होती है, तो मैं कक्षा फ़ाइल को आपकी स्थानीय निर्देशिका में बढ़ा दूंगा और ईवेंट कॉल जोड़ूंगा। वहां से आप उस एक्सटेंशन को बना सकते हैं जिसे उस ईवेंट को ट्रिगर होने पर बुलाया जाता है। –

उत्तर

6

newsletter/subscriber मॉडल इसके बारे में दिखता से एक सामान्य Magento मॉडल है याद आ रही है, तो यह अभी भी नदी के ऊपर वर्गों से कुछ घटनाओं प्रेषण चाहिए। उपयोग करने के लिए कुछ संभावित ईवेंट हुक के लिए newsletter_subscriber_create_after और newsletter_subscriber_delete_after जैसे कुछ पर नज़र डालें। इस घटना के लिए

0

समाचार पत्र मॉड्यूलर हुक: 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() कॉल कर सकते हैं ( के संदर्भ में, 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

यह उत्तर –

+0

होना चाहिए यह मेरे लिए काम नहीं करता 1.7.02 –

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; 
} 
संबंधित मुद्दे