1

我创建了一个模块,它为 magento 实现了一种新的运输方法。目前该模块运行良好。

送货方式显示在单页结帐中。

class Tigerbytes_Barverkauf_Model_Carrier_Selbstabholung extends Mage_Shipping_Model_Carrier_Abstract

现在我想扩展功能。新的运输模块不应再在前端可见。因此,我为我的模块添加了一个新属性。(show_frontend)

配置文件

<default>
        <carriers>
            <selbstabholung>
                <active>1</active>
                <allowed_methods>selbstabholung</allowed_methods>
                <methods>selbstabholung</methods>
                <sallowspecific>0</sallowspecific>
                <model>Tigerbytes_Barverkauf_Model_Carrier_Selbstabholung</model>
                <name>Selbstabholung</name>
                <title>Selbstabholung</title>
                <specificerrmsg>Zur Zeit ist die Versandmethode nicht verfuegbar</specificerrmsg>
                <handling>0</handling>
                <handling_type>F</handling_type>
                <show_frontend>0</show_frontend>
            </selbstabholung>
        </carriers>

    system.xml
<show_frontend translate="label">
                            <label>zeige im Frontend?</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>1</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </show_frontend>

属性 show_frontend 显示在后端,也保存在 core_config_data 表中。

现在最大的问题是在获取单页结帐以供用户选择的运输方法时,对象中没有 show_frontend 属性。

我认为用于运输方式列表的对象是

Mage_Sales_Model_Quote_Address_Rate

那么我必须扩展什么,让 rate 对象知道 show_frontend 属性?

4

2 回答 2

1

你正在做所有你的模块,对吗?

去做就对了:

在您的 collectRates() 方法中,您输入了以下代码:

if(!Mage::getStoreConfig('carrier/selbstabholung/show_frontend'))
    return false;

这段代码应该可以完成这项工作。

再会。

于 2012-11-27T12:08:43.907 回答
0

附件:

我只想允许在前端显示运输方式。在后端订单的后端,我想显示它。

所以在 collectRates() 方法中,我实现了以下条件。

if(Mage::getDesign()->getArea() === Mage_Core_Model_App_Area::AREA_FRONTEND &&
        !Mage::getStoreConfig('carriers/'.$this->_code.'/show_frontend')){

        return false;
    }

现在它的工作完美!

于 2012-11-27T13:37:10.847 回答