#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. как проверить, отключена или включена какая-либо компиляция?