Проблема с установкой модуля Magento — добавление атрибутов в категории

#php #magento #module

#php #magento #модуль

Вопрос:

Сегодня днем я пытался создать модуль в Magento, который просто добавляет еще несколько атрибутов к категориям.

Я пробегусь по сценарию, который я создал до сих пор…

app/etc/Modules/Comp_Categoryattributes.xml

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

app/code/local/Comp/Categoryattributes/etc/config.xml

 <?xml version="1.0"?>
<config>
    <modules>
        <Comp_Categoryattributes>
            <version>0.1.0</version>
        </Comp_Categoryattributes>
    </modules>
    <global>
        <models>
            <categoryattributes>
                <class>Comp_Categoryattributes_Model</class>
                <resourceModel>categoryattributes_mysql4</resourceModel>
            </categoryattributes>
            <categoryattributes_mysql4>
                <class>Comp_Categoryattributes_Model_mysql4</class>
            </categoryattributes_mysql4>
        </models>
        <resources>
            <categoryattributes_setup>
                <setup>
                    <module>Comp_Categoryattributes</module>
                    <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </categoryattributes_setup>
            <ncategoryattributes_setup_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </categoryattributes_setup_write>
            <categoryattributes_setup_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </categoryattributes_setup_read>
        </resources>
    </global>
</config>
  

И, наконец, это любезно предоставлено http://inchoo.net/ecommerce/magento/how-to-add-new-custom-category-attribute-in-magento /
app/code/local/Comp/Categoryattributes/sql/categoryattributes_setup/mysql4-install-0.1.0.php

 <?php

$installer = $this;
$installer->startSetup();

$entityTypeId     = $installer->getEntityTypeId('catalog_category');
$attributeSetId   = $installer->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $installer->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);

$installer->addAttribute('catalog_category', 'twitter_user',  array(
    'type'     => 'int',
    'label'    => 'Twitter Username',
    'input'    => 'text',
    'global'   => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => false,
    'default'           => 0
));

$installer->addAttributeToGroup(
    $entityTypeId,
    $attributeSetId,
    $attributeGroupId,
    'twitter_user',
    '11'                    //last Magento's attribute position in General tab is 10
);

$attributeId = $installer->getAttributeId($entityTypeId, 'twitter_user');

$installer->run("
INSERT INTO `{$installer->getTable('catalog_category_entity_int')}`
(`entity_type_id`, `attribute_id`, `entity_id`, `value`)
    SELECT '{$entityTypeId}', '{$attributeId}', `entity_id`, '1'
        FROM `{$installer->getTable('catalog_category_entity')}`;
");

//this will set data of your custom attribute for root category
Mage::getModel('catalog/category')
    ->load(1)
    ->setImportedCatId(0)
    ->setInitialSetupFlag(true)
    ->save();

//this will set data of your custom attribute for default category
Mage::getModel('catalog/category')
    ->load(2)
    ->setImportedCatId(0)
    ->setInitialSetupFlag(true)
    ->save();

$installer->endSetup();

?>
  

Модуль отображается в области вывода Disable Module серверной части нормально, но я вообще не вижу, чтобы categoryattribute_setup отображался в таблице core_resource? Есть ли что-то очевидное, чего мне не хватает?

Приветствия, ребята,

Том

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

1. Бросьте кубик () в начало вашего установочного скрипта, очистите кэш и перейдите на любую страницу вашего сайта (просто нужно, чтобы Mage::run() сработал). Посмотрите, умрете ли вы.

2. … и не забудьте удалить запись в таблице core_setup для вашего модуля, иначе новая установка не будет выполнена

3. Приветствую ответы, ребята. Бен — я добавил die () в свой скрипт установки, но сайты работают как обычно. Я думаю, это в значительной степени подтверждает мои мысли о том, что он на самом деле не загружается. Дэнни — я не вижу core_setup таблицу? Это не отображается в core_resources , хотя, где остальные записи _setup предназначены для других модулей.

Ответ №1:

Просто просматривая его, я заметил, что ваш конфигурационный / xml-файл содержит следующее:

 <ncategoryattributes_setup_write>
  

Попробуйте удалить ‘n’.

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

1. Да, замечено, это всегда мелочи, которые сбивают вас с толку, не так ли!