以编程方式创建类别

时间:2014-04-01 15:57:28

标签: magento categories magento-1.8

尝试使用更新脚本设置类别。首先,我删除Magento默认创建的类别,然后使用递归创建类别。我还在modules / xml中设置了设置:

<depends>
     <Mage_Catalog />
</depends>

我的升级脚本在这里:

/* @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();

我最终得到了什么:

带有孩子的默认类别,这是好的,然后是默认类别。但没有品牌类别。 感谢。

1 个答案:

答案 0 :(得分:0)

脚本必须位于数据文件夹中,而不是mysql4中。

相关问题