已移至此处:https://magento.stackexchange.com/questions/42434/overwriting-core-shipping-block
我正在从事Magento工作,因为我涉足黑暗艺术已经有一段时间了。我目前正在编写一小部分脚本,它将覆盖结账屏幕上的送货方式。你不得不原谅我代码中的任何平庸,正如我所说的那样。
所以我有两个文件:
应用/代码/本地/ ClarkStudios / Shipmentfilter的/ etc / config.xml中
<global>
<blocks>
<checkout>
<rewrite>
<onepage_shipping_method_available>ClarkStudios_Shipmentfilter_Block_Onepage_Shipping_Method_Available</onepage_shipping_method_available>
</rewrite>
</checkout>
</blocks>
</global>
应用/代码/本地/ ClarkStudios / Shipmentfilter /砌块/ Onepage /运输/方法/ Available.php
class ClarkStudios_Shipmentfilter_Block_Onepage_Shipping_Method_Available extends Mage_Checkout_Block_Onepage_Shipping_Method_Available
{
public function getShippingRates()
{
die('HAHAHAHAHAH!');
$rates = parent::getShippingRates();
$two_kg_array = array('AU','US','CA','BR','VE');
$quote = Mage::getSingleton('checkout/session')->getQuote();
$shipping_country = $this->getQuote()->getShippingAddress()->getCountry();
$weight = $quote->getShippingAddress()->getWeight();
if( in_array( $shipping_country, $two_kg_array ) && $weight > 2 ) {
$rates = array();
}
if( !in_array( $shipping_country, $two_kg_array ) && $weight > 30 ) {
$rates = array();
}
return $rates;
}
}
我似乎无法开火,这说Magento没有认出我的块重写。我可能在这里做了一些根本错误的事情,但是对于正确方向的举手会非常感激。
我应该指出,我正在尝试根据购物车的重量更改“单页结帐”页面上显示的送货方式。对于初学者,我只是想让它解雇模具功能,所以我知道它的工作原理。我也刷新了缓存。
史蒂夫
答案 0 :(得分:2)
您错过了config.xml file
中的课程。所以你的config.xml
应该是,
<?xml version="1.0"?>
<config>
<modules>
<ClarkStudios_Shipmentfilter>
<version>0.1.0</version>
</ClarkStudios_Shipmentfilter>
</modules>
<global>
<helpers>
<shipmentfilter>
<class>ClarkStudios_Shipmentfilter_Helper</class>
</shipmentfilter>
</helpers>
<blocks>
<shipmentfilter>
<class>ClarkStudios_Shipmentfilter_Block</class>
</shipmentfilter>
<checkout>
<rewrite>
<onepage_shipping_method_available>ClarkStudios_Shipmentfilter_Block_Checkout_Onepage_Shipping_Method_Available</onepage_shipping_method_available>
</rewrite>
</checkout>
</blocks>
</global>
</config>
而且,你错过了Checkout目录。你的目录结构应该是,
app/code/local/ClarkStudios/Shipmentfilter/Block/Checkout/Onepage/Shipping/Method/Available.php
所以你的课应该是,
<?php
class ClarkStudios_Shipmentfilter_Block_Checkout_Onepage_Shipping_Method_Available extends Mage_Checkout_Block_Onepage_Shipping_Method_Available
{
}
我在config.xml中添加了Helper。所以你的助手应该是, 辅助/ Data.php
<?php
class ClarkStudios_Shipmentfilter_Helper_Data extends Mage_Core_Helper_Abstract
{
}
最后我们覆盖了一个页面结帐。因此,如果出现任何问题,您无法移动到下一级,(我的意思是您没有收到任何消息)所以不要使用die()
。只需打印一些价值或东西。