完整的设置订单追踪信息的时候我们可能会用到它。在后台中他在这里设置:

有的时候我们想要设置自己定义的 carrier 比如 顺丰 申通 圆通 。。等等

我们能够先从 magento api 入手分析

我们调用 magento api —-> order_shipment.getCarriers

能够去查找 api 函数 在 app\code\core\Mage\Sales\Model\Order\Shipment\Api.php

    public function getCarriers($orderIncrementId)
{
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId); /**
* Check order existing
*/
if (!$order->getId()) {
$this->_fault('order_not_exists');
} return $this->_getCarriers($order);
}

追踪 _getCarriers 方法

 protected function _getCarriers($object)
{
$carriers = array();
$carrierInstances = Mage::getSingleton('shipping/config')->getAllCarriers(
$object->getStoreId()
); $carriers['custom'] = Mage::helper('sales')->__('Custom Value');
foreach ($carrierInstances as $code => $carrier) {
if ($carrier->isTrackingAvailable()) {
$carriers[$code] = $carrier->getConfigData('title');
}
} return $carriers;
}

即 都会有个默认的 custom

之后的都是通过 Mage::getSingleton(‘shipping/config’)->getAllCarriers() 获取的

追踪方法 getAllCarriers() 事实上就是循环config中的 carriers 比如这里面就有magento 自带的freeshipping

和 flatrate 等方法。 可是 要想显示到返回的 $carriers 中须要 isTrackingAvailable 为true

我们事实上能够在上面代码中打印你每个 $carrier 的类名 找到调用的 isTrackingAvailable 方法,

经分析 发现默认的比如 flatrate 他的 model中方法 isTrackingAvailable 是继承父类为false 的。

那么假设此时你想在后台 carrier中有 flatrate 能够设置他的 isTrackingAvailable 方法返回true即可了

相同适用于你自己定义的运送方式。

扩展的说下:

另一点,我们在前台结账的时候到 选择运送方式的时候比如有 flatrate 那么此时他的input value 你能够看到是

flatrate_flatrate 我们继续追踪代码,发现他在代码中显示的 是 getCarrier().’_’.getMethod() 通常我们会把这两个值在

设置的时候设置为一样的(在flatrate的model中)所以显示的就是这个样子了

可是这里要说的就是对接 Odoo 的时候默认的magento连接件 是通过这个订单的shipping method 。即运送方式

你能够在数据表 sale_flat_order 找到 比如就是 flatrate_flatrate 。 然而此时你在 Odoo 中设置tracking number的时候

可能报错,是由于提示没有 flatrate_flatrate

这时假设magento 设置 flatrate 的isTrackingAvailable 为true 你把Odoo中这个code改为 flatrate 就能够了

假设没有。能够直接设置code 为 custom 也是能够的,由于你能够在magento api中找到 默认都有个为 custom的code

magento getCarriers 分析的更多相关文章

  1. Magento架构分析,Magento MVC 设计分析

    Magento架构分析,Magento MVC 设计分析 分类:Magento 标签:Magento MVC.Magento架构 669人浏览 Magento 采用类似 JAVA的架构,其扩展与稳定性 ...

  2. magento性能分析插件

    两个好用的插件: http://connect20.magentocommerce.com/community/MagnetoDebughttp://connect20.magentocommerce ...

  3. 给 Magento 2 添加缓存层的分析与尝试

    虽然黑色星期五有惊无险的过去了, 但是 Magento 2 社区版无法读写分离这个限制, 始终是悬在整个网站上的一把利剑. 我之前尝试过给 Magento 2 写一个 MySQL 读写分离的插件, 在 ...

  4. Magento订单打印(pdf格式)

    Magento自身包含有:打印发票单,打印装箱单,打印退款单.这些都是基于西方国家的习惯来布置的.公司有个需求就是打印订单的四联单,PDF格式的,要一周内完成.刚接到这个任务时,觉得头大,因为对于PH ...

  5. Magento - Rewrite机制一窥

    看一个url例子 http://localhost/magento/index.php/customer/account/login 这里假定http://localhost/magento/ 是ma ...

  6. magento问题集

    magento产品页面价格出现2遍 In app\design\frontend\default\default\template\catalog\product\view\type\Simple.p ...

  7. 解决magento添加产品在前台不显示问题

    有时候我们在magento系统添加产品,前台不显示,最模板分析可能 以下几个原因: 1 添加新品要重新index一下,magento是静态的.html页面,不reindex不出来的.在System→I ...

  8. Magento中调用JS文件的几种方法

    一.全局调用方法: 通过该方法每个页面都会引用这个JS文件,除非是类似jQuery这样的系统文件,不然不推荐这种方法. 文件路径:/app/design/frontend/default/Your_T ...

  9. Magento请求分发与控制器

    Magento请求分发与控制器 Magento使用的是MVC结构,模型-试图-控制器结构,这样更好的实现显示逻辑和数据,业务逻辑的分离,更好的适合开发! 下面为传统的mvc结构 URL请求被一个PHP ...

随机推荐

  1. 打印机共享 : 客户端 连接服务器打印机时提示"无法连接到打印机“

    1.就是重启一下服务器端的Print Spooler服务就行了,这么简单! 2.修改打印机的共享名 操作无法完成(错误0x00000709).再次检查打印机名称,并确保打印机已连接到网络.(xp系统本 ...

  2. python 深浅拷贝小记

    浅拷贝:只拷贝第一层的数据 深拷贝:相当于克隆 一份,也就是完全复制,和被克隆对象完全没关系. 浅拷贝示例:先定义一个列表 >>> s = [1,'alex','alvin'] &g ...

  3. python单元测试-unittest

    python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest 1.介绍下unittest的基本使用方法: 1)import unittest 2)定义一个继承自unittes ...

  4. Node书签

    1.开源项目 [译]过去一年25个惊人的开源Node.js项目(2018版) 百度网盘下载助手

  5. PHP解析XML格式文档

    <?php// 首先要建一个DOMDocument对象$xml = new DOMDocument();// 加载Xml文件$xml->load("3.xml");// ...

  6. Linux学习总结(5)——CentOS常用的目录文件操作命令

    CentOS常用的目录文件操作命令 一.路径操作的CentOS常用命令  cd pwd  NO1. 显示当前路径  [root@rehat root]# pwd  NO2. 返回用户主目录  [roo ...

  7. Eclipse+PyDev解决中文输入和注释问题

    Eclipse的设置 window->preferences->general->editors->text editors->spelling->encoding ...

  8. ZOJ 2562 HDU 4228 反素数

    反素数: 对于不论什么正整数x,起约数的个数记做g(x).比如g(1)=1,g(6)=4. 假设某个正整数x满足:对于随意i(0<i<x),都有g(i)<g(x),则称x为反素数. ...

  9. 【Struts2】Struts2纯手工安装、配置以及Helloworld,以最新版struts 2.3.20 GA做样例

    很多网上的教程对Struts2的配置.安装弄得不明不白,非常多高手以为小白是什么都懂.很多细节上面的地方没有说明清楚,甚至还有在Maven上面解说的,要知道Struts2跟Maven没有半点的关系.全 ...

  10. 具体解释window.location

    window.location 对象所包括的属性 hash//从井号 (#) 開始的 URL(锚) host//主机名和当前 URL 的port号 hostname//当前 URL 的主机名 href ...