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 类别按属性排序的主要内容,如果未能解决你的问题,请参考以下文章

magento 从类别中获取产品,按 rand() 排序

Magento - 按属性分类产品

在Magento | Magento教程中按属性(SKU名称等)加载类别或产品

Magento - 更改属性排序

magento 按位置排序过滤器选项

获取magento类别view.phtml的特定属性