Докато добавяте продуктов атрибут, Използвайте опцията за списък с продукти като Да

I have added this code in the installer in my custom magento module.

    $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' => ''
    ));
    
After installing the module attribute "size_guide" is added but "Used in product listing" dropdown in attribute still set as no but as you seen in my code i have set the used in product listing true.

'used_in_product_listing' => вярно,

Оценявам вашата помощ.

Благодаря предварително.


person Aman Alam    schedule 18.05.2014    source източник


Отговори (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>    

след това създайте класа и заменете метода _prepareValues() по този начин

class Company_Module_Model_Resource_Setup extends Mage_Eav_Model_Entity_Setup {

  protected function _prepareValues($attr) {
    $data = parent::_prepareValues($attr);
    $data = array_merge($data, array(
        'frontend_input_renderer'       => $this->_getValue($attr, 'input_renderer'),
        'is_global'                     => $this->_getValue(
            $attr,
            'global',
            Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL
        ),
        'is_visible'                    => $this->_getValue($attr, 'visible', 1),
        'is_searchable'                 => $this->_getValue($attr, 'searchable', 0),
        'is_filterable'                 => $this->_getValue($attr, 'filterable', 0),
        'is_comparable'                 => $this->_getValue($attr, 'comparable', 0),
        'is_visible_on_front'           => $this->_getValue($attr, 'visible_on_front', 0),
        'is_wysiwyg_enabled'            => $this->_getValue($attr, 'wysiwyg_enabled', 0),
        'is_html_allowed_on_front'      => $this->_getValue($attr, 'is_html_allowed_on_front', 0),
        'is_visible_in_advanced_search' => $this->_getValue($attr, 'visible_in_advanced_search', 0),
        'is_filterable_in_search'       => $this->_getValue($attr, 'filterable_in_search', 0),
        'used_in_product_listing'       => $this->_getValue($attr, 'used_in_product_listing', 0),
        'used_for_sort_by'              => $this->_getValue($attr, 'used_for_sort_by', 0),
        'apply_to'                      => $this->_getValue($attr, 'apply_to'),
        'position'                      => $this->_getValue($attr, 'position', 0),
        'is_configurable'               => $this->_getValue($attr, 'is_configurable', 1),
        'is_used_for_promo_rules'       => $this->_getValue($attr, 'used_for_promo_rules', 0)
    ));
    return $data;
  }

}

Това ще ви позволи да добавите останалите опции към атрибута

person Zefiryn    schedule 18.05.2014

Опитайте да използвате

$_installer = Mage::getResourceModel('catalog/setup', 'catalog_setup');
person MudithaE    schedule 08.05.2015