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 に答える