3

在创建运输模块后,我正在尝试按照本博客中的说明为 magento 1.7.xx 创建自定义(拣货)运输方法。我希望能够根据用户选择的运输选项更改运输成本。

准备:

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());

}

问题:

我是否为这项任务使用了正确的观察者/方法?它只适用于一个步骤——一旦我点击“继续”下订单,它就会重置为默认价格。我设定交货价格的方式可能是错误的。你能让我走上正确的轨道或提出解决方案吗?

4

2 回答 2

1

如果你想编写你定制的解决方案,你可以在这里找到一个很好的教程:Magento 中的自定义运输方式

基本上你不应该使用观察者,而是你应该在你的模块中定义一个具有两种运输方式的自定义承运人。

在您的模型中,使用函数getAllowedMethods()声明您的运输方式,然后在函数中collectRates()给出每种运输方式的费率。

于 2014-10-21T07:25:30.860 回答
0

如果您的主要目标是提供具有不同定价的多种运输方式,并且可以信任第三方模块,您可以尝试 WebShopApps 的免费 MatrixRate

http://www.magentocommerce.com/magento-connect/webshopapps-matrixrate-1-multiple-table-rates-extension.html

还有其他模块,但这是我尝试过的,它按我的预期工作。

于 2014-01-11T12:12:24.267 回答