Имена связанных продуктов настраиваемого продукта не отображаются в админке?

В стандартной установке Magento 1.5.1.0 я создал простые продукты ЦВЕТ-КРАСНЫЙ, ЦВЕТ-СИНИЙ и создал настраиваемый ЦВЕТ продукта, с которым связаны эти продукты. Все это работает нормально, за исключением того факта, что имена связанных продуктов не отображаются в бэкэнде в таблице «Конфигурация атрибутов суперпродукта» настраиваемого продукта. Я добавил простой оператор отладки в htdocs/app/design/adminhtml/default/default/template/widget/grid.phtml для отображения данных элемента перед отображением. См. ниже, атрибут имени отсутствует. Кто-нибудь знает, почему? Это ошибка в Magento или что-то еще не так?

Array
(
    [entity_id] => 1
    [entity_type_id] => 4
    [attribute_set_id] => 9
    [type_id] => simple
    [sku] => COLOR-RED
    [has_options] => 0
    [required_options] => 0
    [created_at] => 2011-12-13 15:08:36
    [updated_at] => 2011-12-13 15:08:36
    [is_saleable] => 0
    [inventory_in_stock] => 0
    [color] => 3
    [price] => 12.0000
    [stock_item] => Varien_Object Object
        (
            [_data:protected] => Array
                (
                    [is_in_stock] => 
                )

            [_hasDataChanges:protected] => 
            [_origData:protected] => 
            [_idFieldName:protected] => 
            [_isDeleted:protected] => 
        )
)

person Magentron    schedule 13.12.2011    source источник


Ответы (1)


Вероятно, вы используете модуль Simple Configurable Products. В файле app/code/community/OrganicInternet/SimpleConfigurableProducts/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Config/Grid.php разработчики Organic Internet оставили небольшую подсказку;

#Copied from Magento v1.3.1 code.
#Only need to comment out addFilterByRequiredOptions but there's no
#nice way of doing that without cutting and pasting the method into my own
#derived class. Boo.
#This change stops the filtering-out of any configurable product's 'associated products' that have compulsory custom options
#Have also replaced parent::_prepareCollection with Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();

Я решил, что код, который использовался в 1.3.1, устарел, поэтому этот файл будет устаревшим, если вы используете > 1.3.1. Поэтому я просто просмотрел содержимое основного файла app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Config/Grid.php, поискал различия и нашел виновника.

Все, что вам нужно сделать, это добавить эту строку;

->joinAttribute('name', 'catalog_product/name', 'entity_id', null, 'inner')

между этими двумя линиями;

->addFieldToFilter('attribute_set_id',$product->getAttributeSetId())
        ->addFieldToFilter('type_id', $allowProductTypes);

И все готово!

person peterjaap    schedule 19.01.2012
comment
Спасибо, попробую прямо сейчас! Я буду держать вас в курсе моих результатов. - person Magentron; 06.02.2012