#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. Да, замечено, это всегда мелочи, которые сбивают вас с толку, не так ли!