2012-09-27 67 views
1

我嘗試按名稱排列頭部導航中的類別和子類別。 我發現至少有3種不同的方式可以這樣做,但他們都沒有效果。Magento 1.5在頭部導航中按名稱排序類別

添加 「 ->setOrder('name', Varien_Db_Select::SQL_ASC)」 到Category.php
  • 添加 「->setOrder('name', 'asc')」 到Category.php
    1. 添加 「->addAttributeToSort('name', Varien_Db_Select::SQL_ASC)」 到Category.php
    2. 添加 「->addAttributeToSort('name', 'asc')」 到Category.php
    3. 排序與SQL查詢,可能工作,但它不是一個真正的選擇在我的情況下

    和其他一些不值得冰...

    對於分層導航我想出來排序數組,但不能這樣做在頭部導航。 我很感激各種提示...

    THX!

  • 回答

    0

    這是因爲集合使用->load()加載 - 之後,您無法更改它。排序它最好的辦法是在管理與拖放排序,或者如果這不是一種選擇,你必須在目錄收集事件_load_before鉤01​​ app/code/core/Mage/Catalog/Model/Resource/Category/Flat/Collection.php
    (如果你使用平板目錄), 但這不是一種正確的方式,因爲它會影響任何類別列表的顯示,並使您的管理排序無法使用。把你的時間,並在管理員正確排序。

    +0

    thx回覆。通過drag'n'drop對它進行排序也不是選擇,我們有超過300個子目錄,並且在每次重新導入後,我們都必須重新排序。正如我理解你的答案,如果我在Collection.php中更改它,我不能在後端使用正常的drag'n'drop,我們並不真的需要該功能,所以這可能是針對此特定需求的一個很好的解決方案,一般來說,如果我錯了,請糾正我。 – DCM

    +0

    當你重新導入時,確保有一個排序順序編號:)無論如何,如果你真的想在db pull上排序它,在頂級導航類生成期間找到事件名稱(你可以在117行上設置一個斷點, Mage_Catalog_Model_Resource_Category_Flat_Collection')並創建一個觀察者,或用您自己的_beforeLoad方法覆蓋集合類,在那裏您將應用該排序。谷歌上有很多關於如何創建觀察者的資源。 – srgb