Программное создание категории, когда в Magento включен плоский режим

Я хочу программно создать категорию в папке данных моего модуля. Опция «Плоские категории» включена.

Когда я пытаюсь создать такую ​​категорию:

$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. Я посмотрел в базе данных, и у меня есть следующие таблицы:

каталог_категория_квартирный_магазин_1
каталог_категория_квартирный_магазин_2
каталог_категория_квартирный_магазин_3
каталог_категория_квартирный_магазин_4
каталог_категория_квартирный_магазин_5
каталог_категория_квартирный_магазин_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, но если я зайду в admin>Manage Categories и не увижу свою созданную категорию.

Я думаю, что когда я создаю категорию, я должен установить идентификатор магазина администратора (0), чтобы я мог видеть его в панели администратора, но затем я получаю сообщение об ошибке выше, и если я создаю с магазином 6, я его не вижу в админ. Я действительно застрял.

Как я могу правильно создать свою категорию программно без проблем?


person zuzuleinen    schedule 22.04.2013    source источник
comment
Поможет ли переиндексация?   -  person Jürgen Thelen    schedule 22.04.2013
comment
Я попробую переиндексировать, но я думаю, что мне следует переиндексировать, прежде чем создавать категории. Потому что я видел, что такие таблицы, как catalog_category_flat_store_X, создаются после процесса переиндексации.   -  person zuzuleinen    schedule 29.04.2013


Ответы (1)


Динамическое создание категории:

$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();
person Kalpesh    schedule 22.04.2013
comment
как получить ID только что созданной категории? - person Cherven; 21.05.2014
comment
$категория-›getId(); с помощью этого получить текущий вставленный идентификатор категории - person Kailas; 11.01.2016