我创建了一个模块,为magento实现了一种新的送货方式。目前该模块运作良好。
送货方式显示在一页结帐中。
class Tigerbytes_Barverkauf_Model_Carrier_Selbstabholung extends Mage_Shipping_Model_Carrier_Abstract
现在我想扩展功能。新的运输模块不再在前端可见。因此我在模块中添加了一个新属性。 (show_frontend)
config.xml
<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表中。
现在最大的问题是,在为用户选择获取onepage checkout的送货方式时,对象中没有show_frontend属性。
我认为用于装运方法列表的对象是
Mage_Sales_Model_Quote_Address_Rate
那么我需要扩展一下,rate对象知道show_frontend属性吗?
答案 0 :(得分:1)
你正在做所有的模块吗?
就这样做:
在您的collectRates()方法中输入以下代码:
if(!Mage::getStoreConfig('carrier/selbstabholung/show_frontend'))
return false;
这段代码应该可以胜任。
美好的一天。
答案 1 :(得分:0)
附件:
我只想允许在前端显示送货方式。在后端订单的后端我想要显示它。
所以在collectRates()方法中我实现了以下条件。
if(Mage::getDesign()->getArea() === Mage_Core_Model_App_Area::AREA_FRONTEND &&
!Mage::getStoreConfig('carriers/'.$this->_code.'/show_frontend')){
return false;
}
现在它的工作完美!