1

パフォーマンスを向上させるために、「フラット カタログ カテゴリを使用する」と「フラット カタログ製品を使用する」を「はい」に設定しました。しかし、このオプションを有効にした後、すべてのサブカテゴリのリストを取得していた以前の cms ページの 1 つが機能しなくなりました。フラットデータを有効にする前にサブカテゴリを取得していたコードは次のとおりです。

$_category = Mage::getModel('catalog/category')->load(CATEGORY-ID);    
$_categories = $_category->getCollection()->addAttributeToSelect(array('url_key','name','image','all_children','is_anchor','description'))
                ->addAttributeToFilter('is_active', 1)
                ->addIdFilter($_category->getChildren())
                ->setOrder('position', 'ASC')
                ->joinUrlRewrite();

注: 両方のフラット データ テーブルにデータが正常に入力されていることを確認しました。このコードは、[フラット カタログ カテゴリを使用] オプションを [いいえ] に変更しても機能します。では、「catalog_category_flat_store_*」テーブルからデータを取得する場合に、カテゴリのリストとそのサブカテゴリを取得するためのコードは何でしょうか?

4

2 に答える 2

4

ここで、このコードが機能しました

    $_category = Mage::getModel('catalog/category')->load(CATEGORY-ID);    
    $_categories = $_category
                    ->getCollection()
                    ->addAttributeToSelect(array('name', 'image', 'description'))
                    ->addIdFilter($_category->getChildren());

    foreach ($_categories as $_category):
       echo $_category->getName();
    endforeach;
于 2013-03-30T01:23:46.227 に答える
1

フィルターを外して確認するだけです。

->addAttributeToFilter('is_active', 1) ->addIdFilter($_category->getChildren())

また、getselect を実行して、生成された SQL クエリを確認します。

上記の 2 つは、さらなるヒントを提供します。さらにコメントするために、ここに投稿してください。

于 2013-03-28T04:03:17.077 に答える