Magento->过滤产品在集合中的可见性

时间:2012-09-17 15:38:29

标签: magento-1.4

我们使用此Magento代码来获取要在Bookstore部分中显示的选择2的出版物列表。

$collection = Mage::getModel('catalog/category')->getCollection();
$collection->addAttributeToSelect('url_key')
    ->addAttributeToSelect('name')
    ->addAttributeToSelect('id')
    ->addAttributeToSelect('description')
    ->addAttributeToSelect('is_anchor')
    ->addAttributeToFilter('is_active', 1)
    ->joinUrlRewrite()
    ->load();

如何添加要选择的属性以使其不包含已设置的发布 “不单独展示”?

如果我加上这个:

->addAttributeToFilter('visibility', 4) // Only catalog, search visiblity

代码失败,并显示消息“无效的属性名称:visiblity”

1 个答案:

答案 0 :(得分:7)

可见性是产品属性,而不是类别属性。要获得仅具有4的可见性的产品,您需要获取产品集合并遍历它以获得明确的类别列表:

$categories = array();
$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('visibility', 4);
foreach($products as $product){ 
  foreach($product->getCategoryIds() as $cat){
     $categories[] = $cat;
  }
}

$categories = array_values(array_unique($categories));

现在,使用我们唯一的类别列表填充$categories数组,我们只能加载这些类别:

$cat = Mage::getModel('catalog/category')->getCollection()->addIdFilter($categories);