2011-02-25 102 views
8

我正在嘗試編寫一個模塊,用於將Magento中的通訊訂閱用戶與外部數據庫進行同步。我需要能夠以編程方式更新Magento中的訂閱狀態,但我有diffuculty獲取Magento中的「setStatus」方法來工作。它不會拋出任何錯誤,但代碼似乎沒有任何影響。下面是我調用該方法的代碼:以編程方式在Magento中設置用戶狀態

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

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

從理論上講,這應該設置所有我訂閱者「訂閱」的狀態。我可以選擇將發送給「setStatus」的參數更改爲以下任何一個不同的狀態。

1:訂閱 2:狀態未激活 3:退訂

如何最好地改變用戶狀態或獲得此代碼工作的任何想法?

在此先感謝!

回答

3

感謝鏈接@Ozair分享我能弄清楚我需要做什麼。

我成功地在Magento用戶對象中設置了用戶的狀態,但我沒有保存該對象。我需要調用Magento的save方法,以便調用ORM並將其寫入數據庫。我需要做的只是在for循環中添加

$cust->save(); 

。以下是整個代碼片段。

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

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

我希望這可以幫助未來的人。我需要它爲一種恆定接觸 - Magento的同步擴展,我做:http://www.freelunchlabs.com/store/constant-contact-and-magento-sync.html

+0

嗨@Chuck D,這正是我需要的。你沒有結束任何問題影響其他事情嗎?我在本地測試了它,它完全按照它所說的做了。 – thismethod 2017-04-28 18:48:52

+0

嗨@thismethod,Nope - 沒有問題。如果您使用MailChimp或ConstantContact等任何第三方擴展程序,他們通常會有保存訂閱者事件的觀察員,並會將更改同步到第三方...... – 2017-04-30 00:35:14

4

看來,通訊的訂戶也被存儲在別處。您所設置的僅僅是在客戶羣中進行其他用途的檢查。

您還需要爲每個客戶完成以下操作。

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

請參閱this鏈接以獲取完整參考。

+0

感謝您的答覆。你分享的鏈接指向了正確的方向。 – 2011-04-30 21:52:24

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 2015-10-07 12:03:40

+0

這正是我一直在尋找的。你是通過終端運行這個還是隻是建立一個php頁面,然後訪問該頁面,它會運行? – thismethod 2017-04-28 18:29:59

相關問題