Magento 类别按属性排序
Posted
技术标签:
【中文标题】Magento 类别按属性排序【英文标题】:Magento category sorting by attributes 【发布时间】:2010-09-24 09:14:22 【问题描述】:我目前正在尝试为 Magento 类别页面制作特殊的排序功能。
我有几个属性需要用于排序:
第一个属性是命名设计师。此属性是在可配置产品上设置的。
接下来的属性命名为颜色和大小。这些不是在可配置产品本身上设置的,而是在“简单产品”上设置的,我将它们组合起来制作可配置产品。
$attributes_designers = $this->getRequest()->getParam('designers');
$attributes_colors = $this->getRequest()->getParam('color');
$attributes_sizes = $this->getRequest()->getParam('size');
$currentCategory = Mage::getModel('catalog/layer')->getCurrentCategory();
$_productCollection = $currentCategory->getProductCollection();
if(count($attributes_designers)>0 and !in_array("ALL",$attributes_designers))
$_productCollection->addAttributeToFilter('designer',$attributes_designers);
if(count($attributes_colors)>0 and !in_array("ALL",$attributes_colors))
$_productCollection->addAttributeToFilter('color',$attributes_colors);
if(count($attributes_sizes)>0 and !in_array("ALL",$attributes_sizes))
$_productCollection->addAttributeToFilter('size',$attributes_sizes);
if(isset($_GET['order'])) $_productCollection->setOrder($this->getRequest()->getParam('order'), $this->getRequest()->getParam('dir'));
$_productCollection->load();
不幸的是,我无法让属性颜色和大小起作用,因为它们没有在可配置产品上设置,而是子产品。
有人知道如何让它工作吗?
提前致谢
【问题讨论】:
【参考方案1】:两件事:
我假设您知道这一点,但只是为了确保:您可以通过编辑目录 >> 属性 >> 管理属性中的属性轻松地使您的任何属性可排序,编辑一个并且底部选项称为“用于排序在产品列表中” - 您应该设置为“是”。 正如您所发现的,Magento 不希望根据与之关联的简单产品中的任何值对可配置产品进行排序。这实际上很有意义。如果您尝试按颜色排序,并且您有一个包含 2 个简单产品的可配置产品,其中一个具有“Apple Red”的颜色,另一个具有“Zealot Black”的颜色,那么它将如何排序?做你希望做的事情根本不合逻辑。它仅根据分配给可配置产品的属性进行排序。【讨论】:
Prattski - 我目前正在列出属性颜色,然后我想显示一个类别中的所有项目,颜色为“棕色”。问题在于这种颜色是在可配置产品的子项上定义的。你知道如何解决这个问题吗?谢谢 如果您将颜色设置为可过滤属性(可通过结果过滤),则可以这样做。 Magento 将查看与您的可配置产品相关的简单产品的所有颜色。如果设置正确,您将在类别视图的左侧看到颜色过滤器。以上是关于Magento 类别按属性排序的主要内容,如果未能解决你的问题,请参考以下文章