Magento按属性排序

时间:2010-09-24 09:14:23

标签: sorting magento

我目前正在尝试为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 个答案:

答案 0 :(得分:3)

两件事:

  • 我假设您知道这一点,但只是为了确保:您可以通过编辑Catalog>>中的属性轻松地将任何属性排序。属性>>管理属性,编辑一个和底部选项称为“用于产品列表中的排序” - 您应将其设置为“是”。
  • 正如您所知,Magento不希望按照与之关联的简单产品中的任何值对可配置产品进行排序。这实际上很有意义。如果您尝试按颜色排序,并且您有一个可配置的产品,其中有两个简单的产品,其中一个颜色为“Apple Red”,另一个颜色为“Zealot Black”,那么它将如何排序呢?做你希望做的事情在逻辑上是不合理的。它仅根据分配给可配置产品的属性进行排序。