0

私はそのようなカテゴリ構造を持っています:

Root Cat
  Sub Cat 1
  Sub Cat 2
  Sub Cat 3

および製品コレクション:

$productCollection = Mage::getResourceModel('catalog/product_collection');

ここで、コレクション内の製品をカテゴリ別に並べ替えたいと思います。サブ カテゴリ 1 製品が最初に来て、次にサブ カテゴリ 2 製品、最後にサブ カテゴリ 3 製品が来るはずです。カテゴリの順序を変更すると、コレクション内の製品の順序も変更されるはずです。どうすればそれを達成できますか?単純な$productCollection->addAttributeToSort('category');または$productCollection->setOrder('category')動作しません。

前もって感謝します!

4

1 に答える 1

1

コレクションを変更するだけで、必要なすべての機能を実現できるとは思いません。category属性ではありません。category_idsですが、並べ替えてみても効果がありませんでした。

カテゴリを(必要な順序で)取得し、addCategoryFilter()関数を使用してそれらのカテゴリから製品を取得します。

例:

$categories = Mage::getModel('catalog/category')->getCollection();
foreach ($categories as $category) {
    echo $category->getId() . ':' . PHP_EOL;
    $products = Mage::getModel('catalog/product')->getCollection()
        ->addCategoryFilter($category);
    foreach ($products as $product) {
        // Do something
        echo '  ' . $product->getSku() . PHP_EOL;
    }
}
于 2012-04-08T15:23:48.877 に答える