我正在尝试在创建发货模块后按照此blog中的说明为magento 1.7.x.x创建自定义(pickship)送货方式。我希望能够根据用户选择的运输方式更改运费。
制备
1。)为自定义(pickship)运输方法创建了一个表单块
2.)使用三个值创建商店名称(可以是任何文本)下拉列表/选择元素:store1,store2,store3。
3.)默认运费通过运费配置设置为1.00美元(仅用于测试目的)。
当前状态:
1。)在完成所需的流程后,当我在单页结帐时选择送货方式时,我会看到一个带有三个选项的选择元素,并且运费价格设置为默认价格。
:定位:
如果用户选择第一个选项,我希望将运费更新为10.00美元,如果用户选择第二个选项,则需要20.00美元。
我的尝试:
经过几个小时的谷歌搜索,我在观察者模型中做了一些更改:
NameSpace_ModuleName_Model_Observer extends Varien_Object {
public function saveShippingMethod($observer) {
$request = $evt->getRequest();
$quote = $evt->getQuote();
$pickship = $request->getParam('shipping_pickship', false);
$rates = $quote->getShippingAddress()->getShippingRatesCollection();
$rate = $rates->getFirstItem();
if($pickship['select_element'] == 1) {
$rate->setPrice(10);
} elseif($pickship['select_element'] == 2) {
$rate->setPrice(20);
}
//Mage::log($rate->getPrice());
}
问题:
我是否使用正确的观察者/方法完成此任务?它只适用于一步 - 一旦我点击'继续'下订单,它就会重置为默认价格。我设定交货价格的方式可能有误。你能让我走上正轨还是建议解决方案?
答案 0 :(得分:1)
如果您想为自定义解决方案编写代码,可以在此处找到一个很好的教程:Custom shipping method in Magento
基本上你不应该使用观察者,而应该在你的模块中定义一个带有两种运输方式的自定义载体。
在您的模型中,使用函数getAllowedMethods()
来声明您的送货方式,然后在功能collectRates()
中为每种送货方式提供费率。
答案 1 :(得分:0)
如果您的主要目标是提供多种不同价格的送货方式,并且可以信任第三方模块,那么您可以尝试使用WebShopApps中的免费MatrixRate
还有其他模块,但这是我尝试过的,它可以按照我的预期工作。