0

モジュールのデータ フォルダーにプログラムでカテゴリを作成したいと考えています。[フラット カテゴリ] オプションが有効になっています。

次のようなカテゴリを作成しようとすると:

$category
    ->setStoreId(0)
    ->setName('My category')
    ->setUrlKey('club-campaigns')
    ->setPath($rootCategory->getPath())
    ->setIsActive(1)
    ->setIsAnchor(1)
    ->setIncludeInMenu(1)
    ->addData($data)
    ->setCustomDesignApply(1)
    ->save();

catalog_category_flat が存在しないというエラーが表示されます。わかりましたので、フラット カテゴリ情報が catalog_category_flat_store_storenumber テーブルに保持されていることはわかっています。データベースを調べたところ、次のテーブルがあります。

catalog_category_flat_store_1
catalog_category_flat_store_2
catalog_category_flat_store_3
catalog_category_flat_store_4
catalog_category_flat_store_5
catalog_category_flat_store_6

ストア 6 のカテゴリを作成したいと考えています。

$category
    ->setStoreId(6)
    ->setName('My category')
    ->setUrlKey('club-campaigns')
    ->setPath($rootCategory->getPath())
    ->setIsActive(1)
    ->setIsAnchor(1)
    ->setIncludeInMenu(1)
    ->addData($data)
    ->setCustomDesignApply(1)
    ->save();

カテゴリはエラーなしで作成され、catalog_category_flat_store_6 に情報が設定されますが、[管理] > [カテゴリの管理] に移動すると、作成されたカテゴリが表示されません。

カテゴリを作成するときに管理者のストアIDを設定する必要があると思います(0)ので、管理パネルで表示できますが、上記のエラーが発生し、ストア6で作成すると表示されません管理者で。私は本当に立ち往生しています。

問題なくプログラムでカテゴリを適切に作成するにはどうすればよいですか?

4

1 に答える 1

4

カテゴリを動的に作成します。

$category = Mage::getModel('catalog/category');
$category->setStoreId(Mage::app()->getStore()->getId());

$cat['name'] = "Custom Category Name here";
$cat['path'] = "1/2/30"; //parent relationship..
$cat['description'] = "categorie's description";
$cat['is_active'] = 1;
$cat['is_anchor'] = 0; //for layered navigation
$cat['page_layout'] = 'two_columns_left';
$cat['url_key'] = "custom-category"; //url to access this category
$cat['image'] = "custom-category.jpg";

$category->addData($cat);
$category->save();

次に、catalog_category_flat のインデックスを動的に再作成します。

$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_category_flat');
$process->reindexEverything();
于 2013-04-22T11:26:37.757 に答える