【问题标题】:Custom Sort of Magento Collection?自定义排序的 Magento 集合?
【发布时间】:2011-08-08 22:24:02
【问题描述】:

事情是这样的,我有需要按尺寸分类的产品系列。尺寸属性值为 XS、S、M、L、XL。当我简单地说

addAttributeToSort('size', 'DESC')

它按尺寸属性值(XS、XL、S、M、L)的字母顺序对它们进行排序。

谁有解决这个问题的提示?

我能想到的最好的方法是在选择过程中创建一些新的选择字段,通过case 命令,根据大小值和排序它的值是 1、2、3、4、5通过那个。但我不知道该怎么做,或者在 Magento 中是否有可能。

【问题讨论】:

  • 您是否通过管理员创建了 size 属性?它是文本字段还是下拉列表?

标签: php sorting collections magento


【解决方案1】:

有趣的问题。您会从我之前关于sorting 的问题中注意到,Magento 默认使用 SQL ORDER BY 语句进行排序。这将使使用addAttributeToSort() 方法实现您所需要的(恕我直言)变得非常困难。

您可以使用与我发布到该问题的答案类似的方法,该方法基本上将集合转换为对象数组,然后应用自定义排序功能。

您需要创建自己的 custom module 并更新布局 xml 以指向新块,例如

<block type="navigation/dropdown" name="product_list" template="catalog/product/list_dropdown.phtml"/>

希望这会有所帮助,
京东

【讨论】:

  • 很棒的提示,非常感谢!我用过,效果很好!
【解决方案2】:

最快的破解方法是拥有第二个属性,该属性定义了属性的正确排序顺序,我认为您可能在上一段中提到过。这将使您对该属性本身进行排序。当然,这需要额外的数据输入才能在您的目录中发挥作用。

您可以尝试的另一件事(老实说,我不知道这是否可行)是尝试使用您的属性的管理员/商店级别标签。 Magento 可能会使用其中一个进行排序,尽管我有点怀疑。

希望有帮助!

谢谢, 乔

【讨论】:

  • 绝对值得一试,在管理标签中使用“1,2,3,4”,在商店标签中使用“XS、S、M、L”。有兴趣听到结果...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
相关资源
最近更新 更多