如何在Magento中添加产品时通知?

时间:2011-03-09 19:01:59

标签: php events magento notifications

我想知道在添加符合他/她兴趣的新产品时通知用户的最佳方式是什么?

我认为一个cron每天至少运行2次(或更多,例如每小时)

我还可以设想实现一种事件系统,但这可能很棘手。

你有任何反馈吗?

由于

4 个答案:

答案 0 :(得分:1)

在新产品添加时,您是否希望向客户发送邮件,然后不要使用RSS或cron只使用名为" catalog_product_save_after"在你的config.xml文件中调用该函数中的一个函数就像这样写

public function sendMailToNotifiedCustomerOk($observer){

       $product  = $observer->getProduct();  //get the current product
       echo "<pre>";    print_r($product); echo "</pre>";exit;

}

当您单击“保存”按钮时,此功能将执行并显示一个标记值,如

 [_isObjectNew:protected] => 1

此值仅为1,仅用于添加新产品。

如果您要更新或编辑产品,则此值为

 [_isObjectNew:protected] =>  

所以它是零(0)

你可以这样写

if($product->_isObjectNew)
{
 //send email to your friends
}

答案 1 :(得分:0)

您需要在“将产品设置为新日期”属性中添加一个值,以便显示在新产品RSS Feed中。制作新的活动系统没有意义。这是实现此类事情的简单方法。

答案 2 :(得分:0)

您可以创建一个与INSERT脚本同时运行的脚本,该脚本搜索数据库中名为“Notify”的表并搜索遍历表格并找到所有注册了类别“Toothpicks”并发送大量电子邮件的人最后找到每个用户

所以你需要设置变量来捕获($ users)中的用户和一个类别($ category = mysql_real_escape_string('$ _ POST ['category']);.然后设置一个SELECT语句从表“Kitchen_Goods”中取出WHERE category = $ category。然后设置$ rows变量,这样你就可以拉出username和email_address列并将它们设置为变量。然后将所有电子邮件结果连接起来,让它们之间有一个逗号,然后回显变量作为mail()函数中的recipients字段。这是一个完整的,不完整的方式。

或者你可以使用更容易100倍的RSS。

答案 3 :(得分:0)

你没有说明你如何拯救顾客的利益,所以在你说不出口之前,我会把它归为魔法。这样做的一个好方法是将事件挂钩到Magento中的catalog_product_save_after事件。保存产品时,此功能将触发。创建一个看起来像这样的观察者:

public function observeProductSave($event) {
    $product = $event['product'];
    $customers = $this->getMatchingCustomerInterests($product);
    foreach($customers as $customer) {
        //send email to that customer
    }
}

public function getMatchingCustomerInterests($product) {
    // here you'll need to use your mechanism for saving
    // customer interests to grab an array/collection of
    // customers to send the emails to.
}

显然这段代码不是100%完整,但这是它的要点。您可能希望添加一个工具,以确保客户不会多次收到有关产品的通知。

希望有所帮助!

谢谢, 乔