2011-02-25 15 views
8

मैं एक मॉड्यूल लिखने की कोशिश कर रहा हूं जो बाहरी डेटाबेस के साथ Magento में मेरे न्यूज़लेटर ग्राहकों को सिंक करता है। मुझे प्रोग्रामेटिक रूप से Magento में सदस्यता स्थिति अपडेट करने में सक्षम होना चाहिए, लेकिन मुझे काम करने के लिए Magento में "setStatus" विधि प्राप्त करने में भिन्नता है। यह किसी भी त्रुटि को फेंक नहीं देता है लेकिन कोड का कोई असर नहीं पड़ता है।Magento में ग्राहक स्थिति

$collection = Mage::getResourceModel('newsletter/subscriber_collection')->showStoreInfo()->showCustomerInfo(); 

foreach ($collection as $cust) { 
    $cust->setStatus(1); 
} 

सिद्धांत रूप में, यह मेरा ग्राहकों की सभी "सदस्य" की स्थिति निर्धारित करना चाहिए: नीचे कोड जहाँ मैं विधि कहते हैं। मैं अलग-अलग स्थिति के लिए नीचे दिए गए किसी भी इंक में "सेटस्टैटस" को भेजे गए तर्क को वैकल्पिक रूप से बदल सकता हूं।

1: सदस्यता लिया 2: स्थिति नहीं सक्रिय 3: सदस्यता छोड़ दी गई

कैसे सबसे अच्छा ग्राहक स्थिति बदलने के लिए या इस कोड काम कर पाने के पर कोई भी विचार?

अग्रिम धन्यवाद!

चक

उत्तर

3

लिंक @Ozair साझा करने के लिए धन्यवाद मैं यह समझने में सक्षम था कि मुझे क्या करना है।

मैं सफलतापूर्वक Magento ग्राहक ऑब्जेक्ट में ग्राहक की स्थिति स्थापित कर रहा था लेकिन मैं ऑब्जेक्ट को सहेज नहीं रहा था। मुझे Magento की सहेजने की विधि को कॉल करने की आवश्यकता थी ताकि वह ओआरएम को कॉल कर सके और इसे डेटाबेस में लिख सके। मुझे बस इतना करना है कि

$cust->save(); 

लूप में जोड़ें। नीचे पूरा कोड स्निपेट है।

$collection = Mage::getResourceModel('newsletter/subscriber_collection')->showStoreInfo()->showCustomerInfo(); 

foreach ($collection as $cust) { 
    $cust->setStatus(1); 
    $cust->save(); 
} 

मुझे उम्मीद है कि यह भविष्य में किसी की मदद करेगा। http://www.freelunchlabs.com/store/constant-contact-and-magento-sync.html

+0

हाय @ चक डी, यह वही है जो मुझे चाहिए। आप किसी और चीज को प्रभावित करने के साथ कोई समस्या नहीं होने का अंत नहीं किया? मैंने इसे अपने स्थानीय पर परीक्षण किया और यह वही किया जो यह कहता है। – thismethod

+0

हाय @thismethod, नहीं - कोई समस्या नहीं है। यदि आप MailChimp या ConstantContact जैसे किसी भी तृतीय पक्ष एक्सटेंशन का उपयोग कर रहे हैं, तो उनके पास आमतौर पर सहेजने वाले ग्राहक ईवेंट के लिए पर्यवेक्षक होते हैं और तीसरे पक्ष के परिवर्तन को सिंक करेंगे ... –

4

ऐसा लगता है कि समाचार पत्र के ग्राहकों को भी कहीं और जमा हो जाती है। आप जो कुछ भी सेट कर रहे हैं वह किसी अन्य उपयोग के लिए ग्राहक आधार में सिर्फ एक चेक है।

आपको प्रत्येक ग्राहक के लिए निम्न कार्य करने की आवश्यकता है।

Mage::getModel('newsletter/subscriber')->subscribe($email); 

एक पूर्ण संदर्भ के लिए this लिंक देखें।

+0

उत्तर के लिए धन्यवाद Magento तुल्यकालन विस्तार मैं बना रहा था - मैं एक लगातार संपर्क के लिए यह आवश्यक। आपके द्वारा साझा किया गया लिंक मुझे सही दिशा में इंगित करता है। –

8

यहाँ एक आयात स्क्रिप्ट:

<?php 
require_once("./app/Mage.php"); 
Mage::app(); 

$subscribers = array('[email protected]', '[email protected]'); 

foreach ($subscribers as $email) { 
    # create new subscriber without send an confirmation email 
    Mage::getModel('newsletter/subscriber')->setImportMode(true)->subscribe($email); 

    # get just generated subscriber 
    $subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email); 

    # change status to "subscribed" and save 
    $subscriber->setStatus(Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED); 
    $subscriber->save(); 
} 
?> 
+0

मेरे लिए काम करता है! धन्यवाद – Jaro

+0

यह वही है जो मैं भी ढूंढ रहा था। क्या आप टर्मिनल के माध्यम से इसे चलाते हैं या सिर्फ एक PHP पृष्ठ बनाते हैं और फिर पृष्ठ पर जाते हैं और यह दौड़ जाएगा? – thismethod