2011-06-16 168 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時,您可能需要查看此文件。