Атрибут изображения в плоском каталоге товаров
У меня есть Magento 1.8 CE, и я выяснил, что при использовании "Плоского каталога продуктов" атрибут "изображение" не собирается. Как я могу добавить этот атрибут в "Плоский каталог продуктов" Невозможно установить "Использовать для перечисления" в разделе "Управление атрибутами".
Есть ли другой способ сделать это?
2 answers
Решение, которое я нашел, является наиболее чистым и использует абстракции в стиле XML Magento для добавления столбца изображения в таблицу catalog_product_flat_1
:
попробуйте этот код:-
В config.xml :
<config>
<frontend>
<product>
<collection>
<attributes>
<image />
</attributes>
</collection>
</product>
</frontend>
</config>
Затем переиндексируйте таблицы плоского каталога (Администратор > Управление индексами> Выберите Все + Переиндексировать) и очистите все кэши Magento.
Вы можете сделать это, добавив атрибут image
в узел frontend/product/collection/attributes
в config.xml
<frontend>
<product>
<collection>
<attributes>
<image/>
</attributes>
</collection>
</product>
</frontend>
Объяснение:
Позвольте объяснить:
Первый взгляд на класс Mage_Catalog_Model_Resource_Product_Flat_Indexer
.
И имя функции getAttributeCodes()
, которая отвечает за создание столбцов в catalog product flat
.
Magento сначала берет атрибуты из global/catalog/product/flat/attribute_nodes
, используя
Маг::getConfig() ->getNode(самостоятельно::XML_NODE_ATTRIBUTE_NODES) ->дети();
Из config.xml
в app/code/core/Mage_Catalog/etc/
<flat>
<max_index_count>64</max_index_count>
<attribute_nodes>
<product_collection>frontend/product/collection/attributes</product_collection>
</attribute_nodes>
<add_filterable_attributes>0</add_filterable_attributes>
<add_child_data>0</add_child_data>
<flag>
<model>catalog/product_flat_flag</model>
</flag>
</flat>
, которые внутренне вызывают узел конфигурации: frontend/product/collection/attributes
.
Если мы определим здесь атрибут, то этот атрибут будет автоматически добавлен в виде столбцов в flat table
.
<frontend>
<product>
<collection>
<attributes>
<attribute_Code/>
</attributes>
</collection>
</product>
</frontend>
Затем необходимо создать систему управления индексами с плоским индексом.