2014-05-22 65 views
1

不工作我試圖重寫目錄Layer類的Magento 1.9後多頭倍,使工作不找錯誤:(Magento的 - 模型覆蓋在本地codePool

日誌中沒有錯誤,模塊正常工作,除了。模型重寫

應用的/ etc /模塊/ comx_fab.xml:

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Comx_Fab> 
      <active>true</active> 
      <codePool>local</codePool> 

     <depends> 
       <Mage_Catalog /> 
     </depends> 
     </Comx_Fab> 
    </modules> 
</config> 

應用程序/代碼/本地/ COMX/FAB的/ etc/config.xml中:

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Comx_Fab> 
      <version>0.2.0</version> 
     </Comx_Fab> 
    </modules> 

    <global> 
     <blocks> 
      <catalog> 
       <rewrite> 
        <product_list_toolbar>Comx_Fab_Catalog_Block_Product_List_Toolbar</product_list_toolbar> 
       </rewrite> 
      </catalog> 
     <page> 
     <rewrite> 
      <html_topmenu>Comx_Fab_Page_Block_Html_Topmenu</html_topmenu> 
     </rewrite> 
     </page> 
     </blocks> 
     <models> 
     <catalog> 
       <rewrite> 
        <layer>Comx_Fab_Catalog_Model_Layer</layer> 
       </rewrite> 
      </catalog> 
     </models> 
    </global> 
</config> 

應用程序/代碼/本地/ COMX/FAB /目錄/型號/ Layer.php:

<?php 
class Comx_Fab_Catalog_Model_Layer extends Mage_Catalog_Model_Layer { 
/** 
* Initialize product collection 
* 
* @param Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection $collection 
* @return Mage_Catalog_Model_Layer 
*/ 
public function prepareProductCollection($collection) { 
    exit('Good!'); 
} 
} 

已經完成:

  • 緩存刷新, 「緩存」 文件夾中刪除,
  • 比較我的Magento代碼當前的Magento版本(無差異)
  • 檢查所有者/ CHMOD

相關: Magento: how to override a model in a local module

回答

2

找到了! :)

它是擴展衝突!

如何解決:

  1. 覈對擴展與此免費Magento的模塊相沖突:​​
  2. 找到衝突的擴展和使用解決一個解決方案(讀底「如何化解矛盾?「)
  3. 清除緩存

在我的情況,一個簡單的添加擴展秩序進入 「依賴」 的能力:

<depends> 
    <Mage_Catalog /> 
    <Trego_Ajaxfilter /> 
</depends> 

如何解決衝突 你有解決衝突的3種選擇:

  1. 從一個合併的代碼衝突的文件到另一個,並且在一個config.xml中關掉重寫config.xml中在一個
  2. 關掉重寫,然後使衝突的擴展PHP文件擴展其他分機
  3. 使用一個擴展的能力取決於另一個。然後,他們將改寫依次

瞭解更多:http://www.webshopapps.com/blog/2010/11/resolving-magento-extension-conflicts/

0

問題在你的模塊結構....

主要問題=圖XML路徑和模式ID通路

app/code/local/Comx/Fab/Catalog/Model/Layer.php 

應該

app/code/local/Comx/Fab/Model/Catalog/Layer.php 

而且 變化根據文件路徑的路徑類別

class Comx_Fab_Catalog_Model_Layer extends Mage_Catalog_Model_Layer { 

class Comx_Fab_Model_Catalog_Layer extends Mage_Catalog_Model_Layer {

沿途經過的所有結構模塊是錯誤的,類paths.Modify所有的塊文件路徑

這裏修改的config.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Comx_Fab> 
      <version>0.2.0</version> 
     </Comx_Fab> 
    </modules> 
    <global> 
     <blocks> 
      <catalog> 
       <rewrite> 
        <product_list_toolbar>Comx_Fab_Block_Catalog_Product_List_Toolbar</product_list_toolbar> 
       </rewrite> 
      </catalog> 
     <page> 
     <rewrite> 
      <html_topmenu>Comx_Fab_Block_Page_Html_Topmenu</html_topmenu> 
     </rewrite> 
     </page> 
     </blocks> 
     <models> 
     <catalog> 
       <rewrite> 
        <layer>Comx_Fab_Model_Catalog_Layer</layer> 
       </rewrite> 
      </catalog> 
     </models> 
    </global> 
</config> 

更多Magento的模塊結構

的細節
http://www.insync.co.in/creating-custom-module-magento/ 
https://mementia.com/creating-custom-magento-module/ 
http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/custom_module_with_custom_database_table 
+1

嗨,謝謝你的回覆。在你提出問題出現之前,我的結構已經是這樣了。我只是改變了我的文件結構以符合你描述的內容,我清空了緩存,但效果並不理想。 Magento簡單地忽略了「重寫」指令。 – kxxxxoo

1

其他人來這裏可能會發現這個有用的,特別是如果他們能找到的模塊加載在「禁用模塊輸出」的文章:管理面板>配置>高級>高級。

取決於你如何設置你的本地環境,您可以在local.xml中在app/etc/local.xml已複製包含: <disable_local_modules>false</disable_local_modules>

防止任何從本地codePool運行,而它仍然會出現在禁用模塊輸出列表。