2011-06-16 117 views
0

我试着覆盖法师/目录/块/产品/ 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); 
    } 
} 

但它不起作用。我做错了什么?

回答

1

在Magento中,不可能用传统方式重写Abstract块。你不能重写扩展抽象类的类吗?

+0

不知道。谢谢你节省我的时间! – user769154 2011-06-16 08:47:18

+0

欢迎您在本地文件夹下创建一个Mage文件夹...创建完全相同的目录并将Abstract类文件的副本放在那里,然后对其进行修改。然而,这是由Magento提供的,因为它会危及您的安装的任何未来版本更新。 – 2011-06-16 08:50:35

0

您可以为您希望覆盖的那个抽象类创建相同的文件夹/文件结构。 即:/local/Mage/Customer/Model/Address/Abstract.php并写出完全相同的原始类(与所有方法),并改变你需要的东西。

不需要额外的.xml,只需指定文件夹上的文件。 但请记住:升级Magento时,您可能需要查看此文件。