将产品属性“使用是产品列表”选项设置添加为“是”

时间:2014-05-18 11:01:27

标签: magento magento-1.7 magento-1.8

我已在自定义magento模块的安装程序中添加了此代码。     

    $installer->addAttribute('catalog_product','size_guide',array(
    'group' => 'General',
    'type' =>  'tinyint',
    'label' => 'Enable Sizechart',
    'input' => 'boolean',
    'source' => 'eav/entity_attribute_source_table',
    'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
    'visible' => true,
    'required' => false,
    'user_defined' => true,
    'used_in_product_listing' => true,
    'default' => '',
    'unique' => false,enter code here
    'apply_to' => ''
    ));
    
安装模块属性“size_guide”后添加,但“在产品列表中使用”下拉列表中的属性仍然设置为“否”,但正如您在我的代码中看到的那样,我已将产品列表中的使用设置为true。

'used_in_product_listing'=>真,

感谢您的帮助。

提前致谢。

2 个答案:

答案 0 :(得分:3)

尝试使用

$_installer = Mage::getResourceModel('catalog/setup', 'catalog_setup');

答案 1 :(得分:2)

当您在Mage_Eav_Model_Entity_Setup课程中查看此方法的定义时,您将获得以下代码:

$data = array_merge(
        array(
            'entity_type_id' => $entityTypeId,
            'attribute_code' => $code
        ),
        $this->_prepareValues($attr)
     );

此代码为属性准备数据。在_prepareValues()方法中,您可以看到返回的数组不包含used_in_product_listing键。因此,即使您在数组中提供它,也不会传递给该方法。 要解决此问题,您必须在config.xml

中声明自己的资源设置模型
<resources>
  <company_module_setup>
    <setup>
      <module>Company_Module</module>
      <class>Company_Module_Model_Resource_Setup</class>
    </setup>
  </company_module_setup>
</resources>    

然后创建类并覆盖{/ 1}}这样的方法

_prepareValues()

它允许您将其余选项添加到属性