2013-09-23 56 views
0

我正在創建一個Magento網站,其中客戶端對如何顯示側邊欄有特定要求。使用自定義塊類覆蓋Mage_Catalog_Block_Navigation使產品列表消失

的目錄類別的默認和目錄搜索結果將組成以不同的方式,這是我創造了自己的模塊,分別稱爲Leafcutter_Catalog_Block_Navigation_Category_Navigation和Leafcutter_Catalog_Block_Navigation_Search_Navigation塊類中的工具欄菜單項。這兩個類都擴展了默認的Mage_Catalog_Block_Navigation。下面是該模塊的config.xml文件:

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Leafcutter_Catalog> 
      <version>1.0</version> 
     </Leafcutter_Catalog> 
    </modules> 
    <global> 
     <blocks> 
      <catalog> 
       <rewrite> 
        <product_list_toolbar>Leafcutter_Catalog_Block_Product_List_Toolbar</product_list_toolbar> 
        <!--<navigation>Leafcutter_Catalog_Block_Navigation</navigation>--> 
        <product_list>Leafcutter_Catalog_Block_Product_List</product_list> 
       </rewrite> 
       <class>Leafcutter_Catalog_Block</class> 
      </catalog> 
     </blocks> 
     <helpers> 
      <catalog> 
       <rewrite> 
        <category>Leafcutter_Catalog_Helper_Category</category> 
       </rewrite> 
      </catalog> 
     </helpers> 
    </global> 

正如你可以看到我已經使用了<class>Leafcutter_Catalog_Block</class>聲明,因爲我不希望使用<rewrite>Mage_Catalog_Block_Nagvigation</rewrite>,因爲我以爲我會失去的能力,使用我新創建的自定義塊類。

我在我的layout目錄的local.xml文件中還寫了一些額外的代碼,以適應我的新創建的塊在其正確的頁面中。

<catalog_category_default> 
      <reference name="product_list"> 
       <action method="setColumnCount"><columns>3</columns></action> 
      </reference> 
      <reference name="left"> 
       <block type="catalog/navigation_category_navigation" as="catalog.polar.vertnav" before="-" template="catalog/navigation/vertnav.phtml" /> 
      </reference> 
     </catalog_category_default> 
     <catalog_category_layered> 
      <reference name="product_list"> 
       <action method="setColumnCount"><columns>3</columns></action> 
      </reference> 
      <reference name="left"> 
       <block type="catalog/navigation_category_navigation" as="catalog.polar.vertnav" before="-" template="catalog/navigation/vertnav.phtml" /> 
      </reference> 
     </catalog_category_layered> 

現在將這些更改應用到代碼後,我的側欄完美地按預期工作。但是,現在的問題是,在目錄類別頁面中,目錄/產品列表根本沒有渲染,並且完全消失。請參閱下面的屏幕截圖。

enter image description here

我的猜測是,<class>Leafcutter_Catalog_Block</class>已經被該模塊所取代。

所以我的問題是如何獲得這個側邊欄效果,你可以在截圖中看到,雖然我有我的產品清單,並且我滿足客戶端的要求,我呈現在目錄類別頁的邊欄一種方法使用我的Leafcutter_Catalog_Block_Navigation_Category_Navigation塊和搜索結果Leafcutter_Catalog_Block_Navigation_Search_Navigation塊?

在此先感謝。

回答

1

添加給你的模塊:

<class>Leafcutter_Catalog_Block</class> 

將導致所有以catalog/..啓動區塊的重寫。你應該刪除它,只重寫你需要重寫的塊。

<blocks> 
    <catalog> 
     <rewrite> 
      <block_alias_here>New_Class_Name_Here</block_alias_here> 
     </rewrite> 
    </catalog> 
</blocks> 
+0

感謝您的回答@Marius。我確實理解你的答案,我認爲這個問題的一部分已經得到解答,因爲我將不得不使用重寫。但是,我將Mage_Catalog_Block_Navigation設置爲默認值,我需要使用Leafcutter_Catalog_Block_Navigation_Category_Navigation覆蓋該類,以便搜索結果使用Leafcutter_Catalog_Block_Navigation_Search_Navigation類。所以說,在你的回答中,甚至可以做我已經說過的話,或者爲了完成這個任務而必須進行重大改寫。 – koramaiku