我正在努力将属性affiliate_link(文本框)添加到自定义产品类型。这是安装程序脚本,但遗憾的是它不起作用:
<?php /** @var $installer Mage_Catalog_Model_Resource_Setup */
$installer = $this;
$installer->startSetup();
$installer->addAttribute(
Mage_Catalog_Model_Product::ENTITY,
'affiliate_link',
array(
'type' => 'text',
'backend' => '',
'frontend' => '',
'label' => 'Affiliate Link',
'input' => 'text',
'class' => '',
'source' => '',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
'visible' => true,
'required' => true,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => false,
'unique' => false,
'apply_to' => 'gift',
'is_configurable' => false,
'used_in_product_listing' => false
)
);
$attributeId = $installer->getAttributeId(
'catalog_product',
'affiliate_link'
);
$defaultSetId = $installer->getAttributeSetId('catalog_product', 'default');
$installer->addAttributeGroup(
'catalog_product',
$defaultSetId,
'Affiliate Information'
);
//find out the id of the new group
$groupId = $installer->getAttributeGroup(
'catalog_product',
$defaultSetId,
'Affiliate Information',
'attribute_group_id'
);
//assign the attribute to the group and set
if ($attributeId > 0) {
$installer->addAttributeToSet(
'catalog_product',
$defaultSetId,
$groupId,
$attributeId
);
}
$installer->endSetup();?>
config.xml代码:
<config>
<modules>
<Cueblocks_Newtype>
<version>0.1.0</version>
</Cueblocks_Newtype>
</modules>
<global>
<catalog>
<product>
<type>
<gift translate="label" module="cueblocks_newtype">
<label>Gift Product</label>
<model>cueblocks_newtype/product_type</model>
<is_qty>0</is_qty>
<composite>0</composite>
<can_use_qty_decimals>0</can_use_qty_decimals>
</gift>
</type>
</product>
</catalog>
<!-- code omitted for brevity -->
<blocks>
<cueblocks_newtype>
<class>Cueblocks_Newtype_Block</class>
</cueblocks_newtype>
</blocks>
<helpers>
<cueblocks_newtype>
<class>Cueblocks_Newtype_Helper</class>
</cueblocks_newtype>
</helpers>
<models>
<cueblocks_newtype>
<class>Cueblocks_Newtype_Model</class>
</cueblocks_newtype>
</models>
<!-- code omitted for brevity -->
<resources>
<cueblocks_newtype_setup>
<setup>
<module>Cueblocks_Newtype</module>
<class>Mage_Catalog_Model_Resource_Setup</class>
</setup>
</cueblocks_newtype_setup>
<newtype_write>
<connection>
<use>core_write</use>
</connection>
</newtype_write>
<newtype_read>
<connection>
<use>core_read</use>
</connection>
</newtype_read>
</resources>
</global>
</config>
非常感谢任何帮助。
答案 0 :(得分:0)
代码看起来很好,但下面的代码对我有用。但它适用于所有产品类型。并创建系统属性。所以改变
$installer->addAttribute('catalog_product', 'affiliate_link', array(
'group' => 'Affiliate',
'label' => 'Affiliate Link',
'type' => 'varchar',
'input' => 'text',
'visible' => true,
'required' => true,
'position' => 1,
'global' => 'Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL',
'note' => "comments note"
));
答案 1 :(得分:0)
最后我弄明白了..安装程序脚本无法正常工作,因为我没有从core_resource表中删除条目...我上面发布的安装程序脚本代码无效..我更新了代码代码由Asif提供......
但是根据magento的默认行为,它在模块和文件的开头执行一次安装程序脚本。它通过该模块名称向core_resource表添加一个条目。现在,如果您将更新相同的脚本,它将不会运行,因为对应于该条目的条目已经存在于数据库中。要使其与更新的代码一起运行,我删除了条目手动从core_resource表&amp;然后尝试使用更新的Asif代码...我的工作就像一个魅力!!!
**注意事项:-1。)无论何时执行任何magento模块,它都会首先检查模块中存在的任何安装程序/更新脚本。因此,始终通过打印消息来解决脚本问题。一开始就死了..
2.)如果您的安装程序代码无法以所需方式运行,并且你更新了相同的脚本..请在core_resource表中检查是否已存在与该模块对应的条目。手动删除该条目&amp;然后您更新的安装程序脚本将起作用。**