Magento创建自定义配送方式并不是很复杂, 不过需要了解在 shipping method 类中所有有用的方法,然后加以利用, 那就变得十分简单了, 我会在这一节中示例不同 cases 情况下所使用的方法
当创建完成后, 配送方式主要会在如下两个地方被显示:
后台 – Admin Panel
前台 – Frontend
为了实现这些, 我们需要对如下三个文件进行修改:
config.xml | system.xml | Shipping Module
步骤一
在我们创建的时候, 需要为我们的配送方式决定一个标识, 在示例中, 我使用唯一标识就是 “excellence”, 接下来创建 system.xml, 这样就可以在后台 configuration 中进行配置
这里需要说明一下的就是, 我们需要将配送方式代码写在如下标签中, 和创建支付方式类似:
从这里你可以看出在 ‘excellence’ 标签中的就是我们配送方式的代码, 这些代码就是用来创建该配送方式是否启用, title, name, 和 price, 当然这些都是每一个配送方式所必须的
步骤二
在 config.xml 中的 <config> 标签里写入如下代码:
这里的 <default> 标签里的内容就是用来在后台 configuration 中为刚创建的标签设置默认值的, 可以看出基本和刚刚由 system.xml 所创建的一一对应, 唯一需要注意的就是 <model> 标签, 它包含了该配送方式的 model 路径, 这个十分重要, 否则该配送方式不会在前端页面显示
现在你可以到 Admin -> System -> Configuration -> Shipping Methods 中看到你刚新建的标签以及初始化的默认值
步骤三
现在我们就要来创建我们配送方式的 model 类文件了, 对应和之前 <model> 标签中所申明的
如上的代码还是比较容易理解的, 不过还是来逐行了解下:
这个方法需要被执行, 正确来说会被 Magento 自身调用, 用来查找出 shipping rates
这个 if 只是来检查该配送方式在后台配置中是否被开启
这里我们创建了 result 对象, 它总是在配送方式中的 collectRate 方法里被返回出来
这些就是用来返回出运费价格(shipping price)的
很明显,这些就是用来返回错误信息的
Model 类文件创建完毕后, 该配送方式应该就可以工作了, 你也可以在 checkout 和 cart 页面中看到
不同 cases 情况下所使用的方法
如下我所写的内容只适用在 collectRates 方法中, 下面我会分别列出不同的情况, 你可以根据自己的需求加以利用, 不过价格最后需要被放在 $result 变量中, 和上面示例中一样
运费价格基于目的地国家,州和邮政编码
可以根据自己业务逻辑的需求添加 if 条件来得出最后的价格
运费价格基于订单的价格或重量
运费价格基于尺寸(Dimension)
运费价格基于产品属性
假如你想让每个产品都有自己不同的运费价格, 为此, 我们需要创建一个产品属性叫: ‘shipping_price’’, 在每一个产品编辑页面填写该产品自己的运费价格, 这样我们就可以在配送方法中通过这个 ‘shipping_price’ 来计算出总运费价格
运费价格基于产品属性选项
假说说网站上有个产品含有多个尺寸, 在页面中提供下拉框来供用户选择, 小号(small)运费为 15, 中号(medium)运费为: 20, 大号(large)运费为: 25
运费价格基于产品自定义选项
假如说网站上有某些产品, 拥有下拉框选项: 快递(Express) 和 邮局普递(Normal), 当用户选择快递(Express)时, 运费价格就是 50, 而邮局普递(Normal)价格则是 10
(责任编辑:好模板) |