私は、クライアントが注文ページ(注文のステップ2)に入ったときにキャリア価格を変更するモジュールを開発しています。顧客として注文ページに到着すると、prestashopは私のモジュールコードで私のメソッドgetPackageShippingCostを呼び出します:PrestaShopは、ファンクションでキャリア価格を設定します。オーバーライドしないカスタムモジュールのgetPackageShippingCost
public function getPackageShippingCost($ id_carrier = null、$ use_tax = true、$ default_country = null、$ product_list = null、$ id_zone = null )
モジュールで受け取った$ id_carrierは実際には$ id_carrierではないことがわかります。代わりに実際のカートオブジェクトであることがわかります。そのため、ordにはそのカートに表示されているキャリアのリストが必要ですエルページ。
現在、私は文でcariersのリストを取得しようとしている: $キャリア=キャリア:: getCarriers($ cookie-> id_lang、真、偽、偽、NULL、PS_CARRIERS_AND_CARRIER_MODULES_NEED_RANGE)。
GetPackageShippingCostはPrestaShopによって数回呼び出されますが、$ carrier var i getは常に同じですが、そうでなければ常に関数に値段を返す必要があります。価格は無料で返されます。問題は、特定のキャリアの反復を検出する。
問題はclasess/Cart.phpを変更またはオーバーライドして解決されますが、オーバーライドする必要はありません。メソッドgetPackageShippingCostをモジュールにするだけで可能です。
多くのありがとうございます。
何が必要とするid_cartによって利用可能なキャリアのリストである、ことを再開 –