добавить два столбца в таблицу catalog_category_entity в magento

#magento #categories

#magento #Категории

Вопрос:

Я хочу сохранить два столбца в таблице catalog_category_entity при добавлении категории. Я изменил запрос следующим образом

 ALTER TABLE `catalog_category_entity` ADD `category_type` ENUM( '1', '0' ) NOT NULL ,
ADD `category_owner` INT NOT NULL COMMENT 'stored vendor_id'
  

и изменил код в app/code/core/Mage/Adminhtml/controllers/Catalog/CategoryController.php файле saveAction() . После $category->addData($data['general']); строки я добавил

 $category->setCategoryOwner(1);
$category->setCategoryType(1);
  

эти две строки. Но он не сохраняется в таблице catalog_category_entity.
Нужно ли мне что-то еще менять? Пожалуйста, помогите мне.

Заранее спасибо.

Ответ №1:

not good idea to add new columns in catalog_category_entity table Это хорошая идея для создания new category attribute using installer .

создайте расширение app/code/local/Bh/Categoryattribute/etc/config.xml и его код

 <?xml version="1.0"?>
<config>
    <modules>
        <Bh_Categoryattribute>
            <version>0.0.1</version>
        </Bh_Categoryattribute>
    </modules>

    <global>
        <resources>
            <categoryattribute_setup>
                <setup>
                    <module>Bh_Categoryattribute</module>
                    <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </categoryattribute_setup>
            <categoryattribute_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </categoryattribute_write>
            <categoryattribute_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </categoryattribute_read>
        </resources>
    </global>
</config>
  

код установщика appcodelocalBhCategoryattributesqlcategoryattribute_setupmysql4-install-0.0.1.php и код

 <?php
$this->startSetup();
$this->addAttribute('catalog_category', 'category_owner', array(
    'group'         => 'General Information',
    'input'         => 'text',
    'type'          => 'int',
    'label'         => 'Category Owner',
    'visible'       => true,
    'required'      => false,
    'visible_on_front' => true,
    'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
));
 $this->addAttribute('catalog_category', 'category_type', array(
    'group'         => 'General Information',
    'input'         => 'text',
    'type'          => 'int',
    'label'         => 'Category Type',
    'visible'       => true,
    'required'      => false,
    'visible_on_front' => true,
    'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
));

$this->endSetup();'
  

для да / нет использования ниже

 $this->addAttribute('catalog_category', 'category_type', array(
    'group'                => 'General',
    'type'              => 'int',//can be int, varchar, decimal, text, datetime
    'backend'           => '',
    'frontend_input'    => '',
    'frontend'          => '',
    'label'             => 'Top Hersteller',
    'input'             => 'select', //text, textarea, select, file, image, multilselect
    'default' => array(0),
    'class'             => '',
    'source'            => 'eav/entity_attribute_source_boolean,//this is necessary for select and multilelect, for the rest leave it blank
    'global'             => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,//scope can be SCOPE_STORE or SCOPE_GLOBAL or SCOPE_WEBSITE
    'visible'           => true,
    'frontend_class'     => '',
    'required'          => false,//or true
    'user_defined'      => true,
    'default'           => '',
    'position'            => 100,//any number will do
));
  

app/etc/modules/Bh_Categoryattribute.xml

 <?xml version="1.0"?>
<config>
    <modules>
        <Bh_Categoryattribute>
            <active>true</active>
            <codePool>local</codePool>
        </Bh_Categoryattribute>
    </modules>
</config>
  

Комментарии:

1. Спасибо, что рассказали о процессе. Но оба поля являются полем выбора, и значения должны быть заполнены из других таблиц. Также на основе значения типа категории (Да / Нет) будет отображаться владелец категории (блок / нет). Возможно ли это, если я последую описанному выше процессу?

Ответ №2:

Пожалуйста, очистите кэш и повторите попытку.

Удалить каталог var / cache

Комментарии:

1. включена или выключена какая-либо компиляция?

2. как проверить, отключена или включена какая-либо компиляция?