以编程方式检索所有运输方式的列表
我正在编写一个快速而肮脏的模块,以根据购物车中的产品限制运输方式。例如,如果客户添加食物,我只想选择隔夜运输方式。一些商业扩展只是矫枉过正,并且具有我需要的更多功能。
每个产品都有一个名为“运输类”的下拉属性。管理员将能够在后端创建这些运输类。他们将为其命名并选择允许使用的方法。
在获取运输报价时,我们只会根据运输类别显示允许的方法。
我的主要问题是:如何检索所有运输方式的列表,供管理员在创建这些运输类别时从中进行选择?
作为第二个问题,在Mage_Sales_Model_Quote_Address::requestShippingRates中对允许的方法进行过滤是否有意义?(当然,我将覆盖此方法)
编辑:
多亏了@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;
}