我正在使用模块设置脚本添加新属性组,属性集和属性。我能够创建属性集,属性组并将产品添加到组/集。但我很难设置 is_filterable , is_visible , is_visible_on_front 和 is_html_allowed_on_front 参数。
$installer->addAttribute('catalog_product', 'offer_type', array(
'backend' => '',
'frontend' => '',
'class' => '',
'default' => '',
'label' => 'Offer type',
'input' => 'text',
'type' => 'int',
'source' => '',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
'visible' => 1,
'required' => 1,
'searchable' => 0,
'filterable' => 1,
'unique' => 0,
'comparable' => 0,
'visible_on_front' => 1,
'is_html_allowed_on_front' => 1,
'user_defined' => 1,
));
$installer->addAttributeToSet('catalog_product', $sSetId, $groupName, 'offer_type');
我看到offer_type被添加到Magento和属性集($ sSetID)以及组($ groupname)。虽然当我从magento管理UI(目录 - >属性 - >管理属性)查看属性时,我看到is_filterable,is_visible,is_visible_on_front和is_html_allowed_on_front参数设置为否。我尝试了各种组合但没有运气。我正在使用Magento CE 1.7.0.2。我不确定我的安装脚本中缺少什么。我已为此提出http://blog.chapagain.com.np/magento-adding-attribute-from-mysql-setup-file/。我错过了什么吗? 提前谢谢。
答案 0 :(得分:7)
您是否在config.xml中正确配置了安装程序? magento安装程序的标准类是Mage_Eav_Model_Entity_Setup
,但在处理产品时,您需要使用Mage_Catalog_Model_Resource_Setup
。
为什么?看看他们的方法_prepareValues()
,你会明白什么是授权属性(产品有比标准eav_objects更多的选项,你可以看到比较表eav_attribute
和catalog_eav_attribute
)< / p>
要指向优秀的安装程序类,请查看标准Mage_Catalog
config.xml
并根据您的模块进行调整:
<resources>
<catalog_setup>
<setup>
<module>Mage_Catalog</module>
<class>Mage_Catalog_Model_Resource_Setup</class><!-- that line !-->
</setup>
</catalog_setup>
</resources>
ps:请注意,只有在添加属性时才会调用_prepareValues()
方法...如果要更新属性,则需要使用完整选项名称(“is_visible”而不仅仅是“可见” “)...
另一个黑客是在之后添加这些属性,但它不是很漂亮:
// adding atribute :
// [...]
//getting the new attribute with full informations
$eavConfig = Mage::getSingleton('eav/config');
$installer->cleanCache();
$attribute = $eavConfig->getAttribute('catalog_product', $attributeCode);
$attribute->addData(array(
'is_visible' => 1
));
$attribute->save()
答案 1 :(得分:-2)
在'visible_on_front' => 1
来电中使用addAttribute
。