以编程方式在 Magento 中设置订阅者状态
Posted
技术标签:
【中文标题】以编程方式在 Magento 中设置订阅者状态【英文标题】:Set subscriber status in Magento programmatically 【发布时间】:2011-07-04 01:47:28 【问题描述】:我正在尝试编写一个模块,将我在 Magento 中的时事通讯订阅者与外部数据库同步。我需要能够以编程方式更新 Magento 中的订阅状态,但我很难让 Magento 中的“setStatus”方法工作。它不会引发任何错误,但代码似乎没有任何效果。下面是我调用该方法的代码:
$collection = Mage::getResourceModel('newsletter/subscriber_collection')->showStoreInfo()->showCustomerInfo();
foreach ($collection as $cust)
$cust->setStatus(1);
理论上,这应该将我所有订阅者的状态设置为“已订阅”。我可以选择将发送到“setStatus”的参数更改为以下任何一个整数以获得不同的状态。
1:已订阅 2:状态未激活 3:退订
如何最好地更改订阅者状态或让此代码正常工作?
【问题讨论】:
【参考方案1】:这里是一个导入脚本:
<?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();
?>
【讨论】:
这正是我所寻找的。您是通过终端运行它还是只是构建一个 php 页面然后访问该页面并运行它? 如何使用名字、姓氏订阅? @jafarpinjar 你不能添加名字和姓氏......这只会出现在表中,如果订阅者也是客户,并且名称取自客户记录。跨度> 【参考方案2】:新闻通讯订阅者似乎也存储在其他地方。您设置的只是检查客户群以供其他用途。
您还需要为每个客户执行以下操作。
Mage::getModel('newsletter/subscriber')->subscribe($email);
完整参考请参见this 链接。
【讨论】:
感谢您的回复。您分享的链接为我指明了正确的方向。【参考方案3】:感谢@Ozair 分享的链接,我能够弄清楚我需要做什么。
我在 Magento 订阅者对象中成功设置了订阅者的状态,但我没有保存该对象。我需要调用 Magento 的保存方法,以便它调用 ORM 并将其写入数据库。我需要做的就是添加
$cust->save();
在 for 循环中。下面是整个代码sn-p。
$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
【讨论】:
嗨@Chuck D,这正是我需要的。你没有结束与这影响其他任何问题的任何问题吗?我在本地对其进行了测试,它确实做到了它所说的那样。 嗨@thismethod,不-没有问题。如果您使用任何第三方扩展程序,例如 MailChimp 或 ConstantContact,它们通常会为保存订阅者事件提供观察者并将更改同步到第 3 方...以上是关于以编程方式在 Magento 中设置订阅者状态的主要内容,如果未能解决你的问题,请参考以下文章
PayPal 订单在 Magento 中设置为“可疑欺诈”状态
通过 iChatAgent 以编程方式在 iChat 中设置状态
Magento 与 Mailchimp -----以编程方式添加复选框