2

現在、オンライン ストアで重量別料金表を使用していますが、計算方法をカスタマイズする必要があります。

現時点では、送料は注文の合計重量によって決定されますが、ショッピング カート内の最も重いアイテムによって郵便料金が決定されるように計算してほしいです。

このモジュールによって行われた計算をオーバーライドする方法を知っていますか? 支援は私を本当に感謝させてくれます。

前もって感謝します。

4

1 に答える 1

5

これらのレートの計算に使用されるMagentoクラスをオーバーライドしますMage_Shipping_Model_Shipping。レート要求が行われると、このクラスのcollectRatesメソッドはMage_Shipping_Model_Rate_Request、アイテムと重みが事前に入力されているオブジェクトを使用して呼び出されます。ただし、そのクラスをオーバーライドでサブクラス化することにより、トリッキーになり、必要なレートを取得できます。

class MyNamespace_MyModule_Model_Shipping extends Mage_Shipping_Model_Shipping {

    public function collectRates(Mage_Shipping_Model_Rate_Request $request) {
        $maxWeight = 0;
        foreach($request->getAllItems() as $item) {
            $maxWeight = max($maxWeight, $item->getRowWeight());
        }
        $request->setPackageWeight($maxWeight);

        return parent::collectRates($request);
    }
}

ここでは、変更されたコードの量を最小限に抑え、モジュールをクリーンに削除でき(さらに、Magentoをアップグレードすることもできます)、リスクが低いことに注意してください。

お役に立てば幸いです。

ありがとう、ジョー

于 2011-03-16T14:06:55.087 に答える