Скрыть название и название способа доставки из внешнего интерфейса
В начале на странице оформления заказа в разделе отгрузки методы и название доставки отображаются в скобках вместе с доставкой и обработкой.
Теперь это выглядит так Доставка и обработка (название - название метода): 5$
Я хочу выглядеть так Доставка и обработка грузов: 5$
Пожалуйста, помогите..
3 answers
Вы можете переопределить метод: Mage_Sales_Model_Quote_Address_Total_Shipping::fetch()
.
Внутри него есть этот фрагмент кода:
$title = Mage::helper('sales')->__('Shipping & Handling');
if ($address->getShippingDescription()) {
$title .= ' (' . $address->getShippingDescription() . ')';
}
Вы можете прокомментировать оператор if и не показывать описание доставки.
Вы можете просто сделать это, перейдя в раздел Система->Конфигурация->Способ доставки и удалив текст описания.
В нем не будет отображаться текст описания. Для этого вам не нужно редактировать какой-либо код.
Вы можете скрыть способ доставки от внешнего интерфейса с помощью observer, напишите этот код в 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');
}
}
}
}