【问题标题】:Magento Automatically send tracking emailMagento 自动发送跟踪邮件
【发布时间】:2012-09-05 15:35:04
【问题描述】:

好的,一直在到处搜索,但找不到任何结果...我们正在通过 Dydacomp 邮购管理器软件中的同步程序在 Magento Community 1.7.0.2 中外部填充跟踪号... - 它关闭了在 Magento 中订购并添加跟踪号,但不会触发 mage 中的发送跟踪电子邮件功能。 - 我进行了研究,发现有观察者等似乎可以做到这一点,但是经过 20 小时搜索我能找到的每个博客等后,无法提出任何有效的方法!

这个链接似乎真的是在正确的方向......但是把这段代码块放在哪里?我试过把它放在各种地方,但都没有效果: Programmaticly send email when shipping tracking number is set

任何帮助将不胜感激。

【问题讨论】:

标签: email magento tracking


【解决方案1】:

我开发了类似的东西。我创建了一个由 cron 激活的模块(每天一次),用于检查最后一个“已交付”的订单(完成状态)。

要在你的 cron magento 模块中运行一个函数,添加到你的 config.xml

<crontab>
    <jobs>            
        <myModule_myFunction>
            <schedule><cron_expr>*/60 * * * *</cron_expr></schedule>
            <run><model>emailtracker/cron::myFunction</model></run>
        </myModule_myFunction>
    </jobs>
</crontab>

为了有货的订单可以使用下面的代码sn-p

$orders = Mage::getModel('sales/order')->getCollection()
        ->addFieldToFilter('status', 'complete')
        ->addAttributeToFilter('created_at', array('gteq' => $dataForFilter));

请注意,我创建的订单集合,我按日期过滤以避免检索所有已下达的订单。

根据我收集的可能接收跟踪电子邮件交付的最近和完整订单,我实际上可以处理重要的订单。

我创建了一个 foreach 以在我的集合中运行,并在该循环中检索跟踪号。

foreach($orders as $order) {
    $trackings = Mage::getResourceModel('sales/order_shipment_track_collection')
            ->setOrderFilter($order)
            ->getData();

    for($i=0;$i<count($trackings);$i++) {
        $trackingNumber = $trackings[$i]['track_number'];
        //Make your php magic here
    }
}

从这一点开始,您可以按照自己的方式处理这些信息。您可以创建一个函数,通过 API 检查跟踪号的状态,并通过其交付服务发送电子邮件,或者您可以想象。

重要提示:请记住检查您的 magento cron 是否处于活动状态。 注意:我是在 Magento 1.6.1.0 中完成的

【讨论】:

  • 嗨!非常感谢您的回复,好的,所以我迷路的地方是......在哪个文件中,我应该将 $orders 和 foreach 放在哪个文件中?
  • 我是这么回答的,相信你知道一个模块的结构以及如何构建一个模块。您应该将代码放在 Modal 模块的 php 文件中。在我的例子中,我使用了名称“cron.php”研究一个模块的一些结构,这一切都会很清楚:coding.smashingmagazine.com/2012/03/01/…
猜你喜欢
  • 2014-03-17
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多