Pergunta

Trying to set categories with update script. First I delete category, that Magento creating by default, then create categories with recursion. Also I got settings in modules/xml:

<depends>
     <Mage_Catalog />
</depends>

I have my upgrade script here:

/* @var $installer Mage_Eav_Model_Entity_Setup */
$installer->startSetup();

Mage::register('isSecureArea', true);
Mage::getModel('catalog/category')->load(2)->delete();
Mage::unregister('isSecureArea');

$categories = array(
    array(
        'name' => 'Brand Category',
        'children' => array(
            array(
                'name' => 'Carrier Bags',
                'children' => array(
                    array(
                        'name' => 'Retail Bags',
                    ),
                    array(
                        'name' => 'Outlet Bags',
                    ),
                ),
            ),
            array(
                'name' => 'Giftpackaging',
            ),
        ),
    ),
    array(
        'name' => 'Default Category',
        'children' => array(
            array(
                'name' => 'Draagtassen',
                'children' => array(
                    array(
                        'name' => 'Papier',
                        'children' => array(
                            array(
                                'name' => 'Luxe papier',
                            ),
                            array(
                                'name' => 'Kraft papier',
                            ),
                        ),
                    ),
                ),
            ),
            array(
                'name' => 'Geschenkverpakkingen',
                'children' => array(
                    array(
                        'name' => 'Geschenkdozen',
                    ),
                    array(
                        'name' => 'Cadeauzakken',
                        ),
                    array(
                        'name' => 'Cadeau-/Inpakpapier',
                        ),
                ),
            ),
        ),
    ),
);

function createCat(array $data, $path = '1') {
    $data = array_merge(
        array(
            'is_active'                     => 1,
            'is_anchor'                     => 0,
            'display_mode'                  => 'PRODUCTS',
            'custom_use_parent_settings'    => 0,
            'path'                          => $path,
        ),
        $data
    );

    $children = array();
    if (isset($data['children'])) {
        $children = $data['children'];
        unset($data['children']);
    }

    $category = Mage::getModel('catalog/category')->setData($data)->save();

    if (!empty($children)) {
        foreach ($children as $child) {
            createCat($child, $category->getPath());
        }
    }
}

foreach ($categories as $cat) {
    createCat($cat);
}

$this->endSetup();

What I have in the end it's:

Default Category with children, that's good and then Default Category once more. But no Brand Category. Thanks.

Foi útil?

Solução

Script must be in data folder, not in mysql4.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top