Chu*_*k D 8 php newsletter magento subscriber
我正在尝试编写一个模块,将Magento中的新闻通讯订阅者与外部数据库同步.我需要能够以编程方式更新Magento中的订阅状态,但我正在让Mucnto中的"setStatus"方法工作.它不会抛出任何错误,但代码似乎没有任何影响.下面是我调用该方法的代码:
$collection = Mage::getResourceModel('newsletter/subscriber_collection')->showStoreInfo()->showCustomerInfo();
foreach ($collection as $cust) {
$cust->setStatus(1);
}
Run Code Online (Sandbox Code Playgroud)
从理论上讲,这应该将我所有订阅者的状态设置为"已订阅".我可以选择将发送到"setStatus"的参数更改为以下任何一个不同状态的int.
1:订阅2:状态未激活3:取消订阅
如何最好地更改订户状态或使此代码工作?
这是一个导入脚本:
<?php
require_once("./app/Mage.php");
Mage::app();
$subscribers = array('email1@server1.com', 'email2@server2.com');
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();
}
?>
Run Code Online (Sandbox Code Playgroud)
通讯订阅者似乎也存储在其他位置。您所设置的只是在客户群中检查其他用途。
您还需要为每个客户执行以下操作。
Mage::getModel('newsletter/subscriber')->subscribe($email);
Run Code Online (Sandbox Code Playgroud)
请参阅此链接以获取完整参考。
感谢 @Ozair 分享的链接,我能够弄清楚我需要做什么。
我成功地在 Magento 订户对象中设置了订户的状态,但我没有保存该对象。我需要调用 Magento 的 save 方法,以便它调用 ORM 并将其写入数据库。我需要做的就是添加
$cust->save();
Run Code Online (Sandbox Code Playgroud)
在 for 循环中。下面是整个代码片段。
$collection = Mage::getResourceModel('newsletter/subscriber_collection')->showStoreInfo()->showCustomerInfo();
foreach ($collection as $cust) {
$cust->setStatus(1);
$cust->save();
}
Run Code Online (Sandbox Code Playgroud)
我希望这对将来的人有帮助。我需要它来实现我正在制作的 Constant Contact - Magento 同步扩展:http://www.freelunchlabs.com/store/constant-contact-and-magento-sync.html
| 归档时间: |
|
| 查看次数: |
13580 次 |
| 最近记录: |