カート内の商品に基づいて配送方法を制限するクイックアンドダーティーモジュールを作成しています。たとえば、顧客が食品を追加する場合は、翌日配送方法を選択するだけです。いくつかの商用拡張機能は過度の機能しか持たず、必要な機能をさらに備えています。プログラムですべての配送方法のリストを取得
各製品には、「Shipping Class」というドロップダウン属性があります。管理者はバックエンドでこれらの出荷クラスを作成することができます。彼らはそれに名前を付け、どの方法が許されるかを選ぶでしょう。
送料の見積もりを取得するには、出荷クラスに基づいて許可された方法のみが表示されます。
私の主な質問は、これらの出荷クラスを作成する際に管理者が選択するすべての配送方法のリストを取得するにはどうすればよいですか?
また、Mage_Sales_Model_Quote_Address :: requestShippingRatesの内部で許可されたメソッドのフィルタリングを行うのが理にかなっていますか? (私はもちろん、このメソッドをオーバーライドします)
EDIT:@BrianVPSに
おかげで、私は以下のコードを思い付くことができました。 optgroupsを使用しているキャリアからのすべての個々のメソッドを表示します。マルチセレクションでうまくいきます!私はメソッドが実際に有効になっているかどうかをチェックするとは思わない。ここで
public function getAllShippingMethods()
{
$methods = Mage::getSingleton('shipping/config')->getActiveCarriers();
$options = array();
foreach($methods as $_ccode => $_carrier)
{
$_methodOptions = array();
if($_methods = $_carrier->getAllowedMethods())
{
foreach($_methods as $_mcode => $_method)
{
$_code = $_ccode . '_' . $_mcode;
$_methodOptions[] = array('value' => $_code, 'label' => $_method);
}
if(!$_title = Mage::getStoreConfig("carriers/$_ccode/title"))
$_title = $_ccode;
$options[] = array('value' => $_methodOptions, 'label' => $_title);
}
}
return $options;
}
配送クラスと発送方法を明確にします。 –
出荷クラスは、商品に割り当てることのできる許可された出荷方法の集まりに過ぎません。たとえば、すべての翌日配送方法に関連付けられた「Food」という名前のクラスを作成できます。すべての食品に「食品」輸送クラスが割り当てられます。配送見積もりを取得する時間が来ると、Magentoはカート内の商品に配送クラスがあるかどうかを確認します。私たちの製品の1つがケーキの場合、Magentoは一晩でないすべての配送方法を隠すべきです。 –