私はこの方法を使用しているので、新しいカテゴリを作成します:
private function createCat($name){
$category = Mage::getModel( 'catalog/category' );
$category->setStoreId( 0 );
$category->setName( $name ); // The name of the category
$category->setUrlKey( strtolower($name) ); // The category's URL identifier
$category->setIsActive( 1 ); // Is it enabled?
$category->setIsAnchor( 0 );
// Display mode can be 'PRODUCTS_AND_PAGE', 'PAGE', or 'PRODUCTS'
$category->setDisplayMode( 'PRODUCTS' );
$category->setPath( '1/3' ); // Important you get this right.
$category->setPageTitle( $name );
$category->save();
return $category->getId();
}
Magento がカテゴリに割り当てた ID がわかったら、次のメソッドをループで呼び出して、各カテゴリに親カテゴリを割り当てます。
private function assignCat($id, $parent){
$category = Mage::getModel( 'catalog/category' )->load($id);
$category->setPath( '1/3/'.$parent.'/'.$id ); // Important you get this right.
$category->save();
return;
}
ただし、実際には機能しません。最初の方法はカテゴリを正常に作成しますが、2 番目の方法を実行した後、管理パネルを読み込んでカテゴリを表示することさえできません。
私は何を間違っていますか?
編集:
間違った ID を 2 番目のメソッドに送信していました。データベース テーブル catalog_category_entity が正しく入力されたように見えますが、現在、カテゴリは管理ビューに正しく表示されません。それらはまだルート カテゴリが親であるかのように表示され、データベースでは、新しい親は 0 の子を持っていると表示されます。行う必要のある何らかの索引付けはありますか?
編集:解決策:
私はその間に解決策を見つけることができました。親カテゴリを変更するには、組み込みのカテゴリ move() メソッドを使用して、カテゴリをその下に移動する必要がありました。
private function assignCat($id, $parent){
$category = Mage::getModel( 'catalog/category' )->load($id);
Mage::unregister('category');
Mage::unregister('current_category');
Mage::register('category', $category);
Mage::register('current_category', $category);
$category->move($parent);
return;
}