3

我们使用这个 Magento 代码来获取出版物列表,以便从中选择 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

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

4

1 回答 1

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);
于 2012-10-02T22:25:51.480 回答