2010-09-24 124 views
1

我目前正在尝试为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(); 

不幸的是我无法获得属性颜色和尺寸的工作,因为它们没有在可配置产品上设置,但它是儿童。

有没有人有一个想法如何得到这个工作?

在此先感谢

回答

3

两件事情:

  • 我假定你知道这一点,但只是为了确保:您可以轻松地通过编辑目录>>属性属性让你的任何属性的排序>>管理属性,编辑一个和最下面的选项被称为“用于产品列表排序” - 您应该设置为“是”。
  • 正如您发现的那样,Magento不想通过与其关联的简单产品中的任何值对可配置产品进行排序。这实际上很有意义。如果您尝试按颜色进行分类,并且您有一个可配置的产品,其中包含两种简单产品,其中一种颜色为“Apple Red”,另一种为“Zealot Black”,那么它将如何分类?做你希望的事情根本无法合乎逻辑。它只根据分配给可配置产品的属性进行排序。
+0

Prattski - 我目前正在列出属性颜色,然后我想要显示颜色为“Brown”的所有项目。问题在于,这种颜色是在可配置产品的孩子身上定义的。你有什么想法如何解决这个问题?谢谢 – Kristian 2010-09-24 16:14:20

+1

如果将颜色设置为可筛选属性(可筛选结果),则可以这样做。 Magento将查看与您的可配置产品相​​关的简单产品的所有颜色。如果设置正确,您会在类别视图的左侧看到彩色滤镜。 – Prattski 2010-09-27 20:28:00