2012-06-15 20 views
5

私は新しいカテゴリを作成し、このメソッドを使用しています:私は、Magentoのカテゴリに割り当てられたIDを知っているMagento - カテゴリの新しい親をプログラムで設定する方法

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(); 
} 

した後、私はその後、各カテゴリに親カテゴリを割り当てるには、ループ内で次のメソッドを呼び出します。

実際には機能しません。最初の方法はカテゴリをうまく作成しますが、2番目の方法を実行した後は、管理パネルを読み込んでカテゴリを表示することさえできません。

私は間違っていますか?

EDIT:

私は第二の方法に間違ったIDを送信していました。データベーステーブルcatalog_category_entityが正しく入力されたように見えますが、管理ビューではカテゴリが正しく表示されません。彼らはまだルートカテゴリが親であるかのように表示されており、データベースでは新しい親が0の子を持つとして表示されています。何らかのインデックス作成が必要ですか?

EDIT:SOLUTION:

私は平均時間で解決策を見つけることができました。あなただけのsetParentId()を使用することができます

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; 
} 
+4

解決策を回答として投稿する必要があります – Benubird

答えて

1

$category->setParentId($parentCategoryId); 

代わりにあなたはカテゴリーを使用することができ、親カテゴリを変更するには、私が構築されたカテゴリに移動()メソッドを使用して、その下のカテゴリを動かすのに必要なApi Modelを使用してカテゴリを作成します。

$categoryData = array(
    'name'  => $name, 
    'url_key'  => $urlKey, 
    'is_active' => '1', 
); 

$categoryApi = Mage::getModel('catalog/category_api_v2'); 
$categoryId = $categoryApi->create($parentCategoryId, $categoryData, $store) 
関連する問題