【问题标题】:Magento 1.5 sort categories by name in head-navigationMagento 1.5 在头部导航中按名称排序类别
【发布时间】:2012-09-27 10:18:05
【问题描述】:

我尝试按名称对头部导航中的类别和子类别进行排序。 我发现至少有 3 种不同的方法可以做到这一点,但它们似乎都不起作用。

  1. 在 Category.php 中添加“->setOrder('name', Varien_Db_Select::SQL_ASC)
  2. 在 Category.php 中添加“->setOrder('name', 'asc')
  3. 在 Category.php 中添加“->addAttributeToSort('name', Varien_Db_Select::SQL_ASC)
  4. 在 Category.php 中添加“->addAttributeToSort('name', 'asc')
  5. 使用 SQL 查询排序,可能有效,但在我的情况下它不是一个真正的选择

还有一些不值得关注的……

对于分层导航,我想出对数组进行排序,但不能在头部导航中这样做。 我很感激各种提示......

谢谢!

【问题讨论】:

    标签: magento


    【解决方案1】:

    这是因为集合是使用 ->load() 加载的 - 之后您无法更改它。对其进行排序的最佳方法是通过拖放在管理员中对其进行排序,或者如果这不是一个选项,则必须在
    app/code/core/Mage/Catalog/Model/Resource/Category/Flat/Collection.php
    中挂钩目录收集事件 _load_before (如果您使用的是平面目录), 但这不是正确的方法,因为它会影响任何类别列表的显示并使您的管理员排序无法使用。花点时间在管理中正确排序。

    【讨论】:

    • 感谢您的回复。通过拖放进行排序也是没有选择的,我们有 300 多个子目录,每次重新导入后,我们都必须重新排序。据我了解您的回答,如果我在 Collection.php 中更改它,我将无法在后端使用正常的拖放功能,无论如何我们并不真正需要该功能,因此这可能是满足这一特殊需求的一个很好的解决方案,不是一般的,如果我错了,请纠正我。
    • 好吧,当您重新导入时,请确保有一个排序顺序号 :) 无论如何,如果您真的想在 db pull 上对其进行排序,请在顶部导航类别生成期间找出事件名称(您可以设置在第 117 行断点,Mage_Catalog_Model_Resource_Category_Flat_Collection) 并创建一个观察者,或者使用您自己的 _beforeLoad 方法覆盖集合类,您将在其中应用排序。 google 上有很多关于如何创建观察者的资源。
    猜你喜欢
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多