我目前正在处理用于订单导入脚本的送货模块扩展程序,以便为每个订单设置相同的运费和运费代码。
Everythings工作正常,但问题是,运输方法在前端可见。我稍后将在magento connect中发布此扩展,因此编辑前端模板并不容易。
有没有人知道如何在前端禁用载体而不在后端禁用模块或将状态更改为非活动而不编辑模板? (例如,拒绝显示的自定义块)
感谢大家! MRU
编辑: 我已经尝试过这样的提示,但它不起作用:
<blocks>
<checkout>
<rewrite>
<onepage_shipping_method_availible>XXX_XXX_Block_Checkout_Onepage_Shipping_Method_Available</onepage_shipping_method_availible>
</rewrite>
</checkout>
</blocks>
并创建了这个类:
class XXX_XXX_Block_Checkout_Onepage_Shipping_Method_Available extends Mage_Checkout_Block_Onepage_Shipping_Method_Available
{
public function getShippingRates()
{
if (empty($this->_rates)) {
$this->getAddress()->collectShippingRates()->save();
$groups = $this->getAddress()->getGroupedAllShippingRates();
return $this->_rates = $groups;
}
return $this->_rates;
}
}
(我不知道为什么它没有正确显示......)
感谢您的举办,MRu
EDIT2: 很抱歉这么愚蠢..如果我不能写'availablelbe',上面发布的代码就可以了......
谢谢!
答案 0 :(得分:2)
您可以使用观察者隐藏前端的送货方式,在config.xml
<frontend>
<events>
<sales_quote_collect_totals_before>
<observers>
<frontend_shipping_rates_sales_quote_collect_totals_before>
<class>yourmodule/observer</class>
<method>hideShippingMethods</method>
</frontend_shipping_rates_sales_quote_collect_totals_before>
</observers>
</sales_quote_collect_totals_before>
</events>
Observer.php
中的第二个使用此代码
public function hideShippingMethods( Varien_Event_Observer $observer )
{
if (Mage::getDesign()->getArea() === Mage_Core_Model_App_Area::AREA_FRONTEND)
{
$quote = $observer->getEvent()->getQuote();
$store = Mage::app()->getStore($quote->getStoreId());
$carriers = Mage::getStoreConfig('carriers', $store);
$hiddenMethodCode = 'freeshipping';
foreach ($carriers as $carrierCode => $carrierConfig)
{
if( $carrierCode == $hiddenMethodCode )
{
$store->setConfig("carriers/{$carrierCode}/active", '0');
}
}
}
}
答案 1 :(得分:1)
您需要重载Mage_Checkout_Block_Onepage_Shipping_Method_Available::getShippingRates()
方法