相关疑难解决方法(0)

以编程方式检索所有送货方式的列表

我正在编写一个快速而肮脏的模块来限制基于购物车中产品的运输方式.例如,如果客户添加食物,我只想要选择隔夜送货方式.一些商业扩展只是矫枉过正,并且拥有我需要的更多功能.

每个产品都有一个名为"Shipping Class"的下拉属性.管理员将能够在后端创建这些Shipping Classes.他们会给它一个名字,并选择允许哪些方法.

在获得运费报价时,我们只会显示基于运输类的允许方法.

我的主要问题是:如何在创建这些运输类时检索管理员可以选择的所有运送方式的列表?

作为次要问题,在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;
}
Run Code Online (Sandbox Code Playgroud)

php magento

17
推荐指数
2
解决办法
3万
查看次数

标签 统计

magento ×1

php ×1