Magento 1.5覆盖目录块
问题描述:
我试着覆盖法师/目录/块/产品/ Abstract.php。Magento 1.5覆盖目录块
假设我的模块名为Abc。
这里是我的应用程序的/ etc /模块/ Abc_Catalog.xml
<?xml version="1.0"?>
<config>
<modules>
<Abc_Catalog>
<active>true</active>
<codePool>local</codePool>
</Abc_Catalog>
</modules>
</config>
这里是我的代码/本地/ ABC /目录的/ etc/config.xml中
<?xml version="1.0"?>
<config>
<global>
<blocks>
<catalog>
<rewrite><product_abstract>Abc_Catalog_Block_Product_Abstract</product_abstract></rewrite>
</catalog>
</blocks>
</global>
</config>
这里是我的代码/local/Abc/Catalog/Product/Abstract.php
include_once "Mage/Catalog/Block/Product/Abstract.php";
class Abc_Catalog_Block_Product_Abstract extends Mage_Catalog_Block_Product_Abstract
{
public function getAddToCartUrl($product, $additional = array())
{
echo 'here'; exit;
/*if ($product->getTypeInstance(true)->hasRequiredOptions($product)) {
if (!isset($additional['_escape'])) {
$additional['_escape'] = true;
}
if (!isset($additional['_query'])) {
$additional['_query'] = array();
}
$additional['_query']['options'] = 'cart';
return $this->getProductUrl($product, $additional);
}*/
return $this->helper('checkout/cart')->getAddUrl($product, $additional);
}
}
但它不起作用。我做错了什么?
答
在Magento中,不可能用传统方式重写Abstract块。你不能重写扩展抽象类的类吗?
答
您可以为您希望覆盖的那个抽象类创建相同的文件夹/文件结构。 即:/local/Mage/Customer/Model/Address/Abstract.php
并写出完全相同的原始类(与所有方法),并改变你需要的东西。
不需要额外的.xml,只需指定文件夹上的文件。 但请记住:升级Magento时,您可能需要查看此文件。
不知道。谢谢你节省我的时间! – user769154 2011-06-16 08:47:18
欢迎您在本地文件夹下创建一个Mage文件夹...创建完全相同的目录并将Abstract类文件的副本放在那里,然后对其进行修改。然而,这是由Magento提供的,因为它会危及您的安装的任何未来版本更新。 – 2011-06-16 08:50:35