Magento 2: что такое файл catalog_attributes.xml?

14

Я заметил, что Magento 2 содержит несколько catalog_attributes.xmlфайлов в следующих папках:

  • app/code/Magento/Bundle/etc
  • app/code/Magento/Catalog/etc
  • app/code/Magento/CatalogSearch/etc
  • app/code/Magento/CatalogUrlRewrite/etc
  • app/code/Magento/Downloadable/etc
  • app/code/Magento/GiftMessage/etc
  • app/code/Magento/Msrp/etc
  • app/code/Magento/Sales/etc
  • app/code/Magento/Tax/etc
  • app/code/Magento/Wishlist/etc

Эти файлы выглядят так (пример для Salesфайла):

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Catalog:etc/catalog_attributes.xsd">
    <group name="quote_item">
        <attribute name="sku"/>
        <attribute name="type_id"/>
        <attribute name="name"/>
        <attribute name="status"/>
        <attribute name="visibility"/>
        <attribute name="price"/>
        <attribute name="weight"/>
        <attribute name="url_path"/>
        <attribute name="url_key"/>
        <attribute name="thumbnail"/>
        <attribute name="small_image"/>
        <attribute name="tax_class_id"/>
        <attribute name="special_from_date"/>
        <attribute name="special_to_date"/>
        <attribute name="special_price"/>
        <attribute name="cost"/>
        <attribute name="gift_message_available"/>
    </group>
</config>

Для чего используются эти файлы?

Рафаэль в цифровом пианизме
источник

Ответы:

20

Как правило, эти файлы содержат список атрибутов, которые служат различным целям.
Группа used_in_autogenerationиз файла в модуле каталога служит для перечисления атрибутов, которые имеют автоматически сгенерированное значение.
Они получены в\Magento\Catalog\Helper\Product::getAttributesAllowedForAutogeneration

Группа quote_itemпредставляет атрибуты, которые будут скопированы из продукта в элемент цитаты.

unassignable содержит список атрибутов, которые не могут быть отменены из любого набора атрибутов.

Извините, но я не знаю всех доступных групп.
Но вы не ограничены только существующими группами. Вы можете добавить свои собственные и использовать их, как вам угодно, просто позвонив \Magento\Catalog\Model\Attribute\Config::getAttributeNames('group_name_here'). (но сначала создайте экземпляр класса).

[РЕДАКТИРОВАТЬ]
Я не уверен в этом, но у меня есть вещи catalog_categoryи catalog_productгруппы, которые содержат системные атрибуты для продуктов и категорий.

Мариус
источник
9

Только вчера я наткнулся на это впервые. Он используется, например, для добавления пользовательских атрибутов для цитирования товаров, в противном случае они не будут загружены для экономии ресурсов (в моем случае я хотел отобразить colorатрибут на странице корзины). В Magento 1 вы должны ввести что-то вроде этого в свой модуль config.xml:

<config>
    <global>
        <sales>
            <quote>
                <item>
                    <product_attributes>
                        <color />
                    </product_attributes>
                </item>
            </quote>
        </sales>
    </global>
</config>

Чтобы добиться того же в M2, вы должны добавить catalog_attributes.xmlв свой модуль и сделать следующее:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Catalog:etc/catalog_attributes.xsd">
    <group name="quote_item">
        <attribute name="color" />
    </group>
</config>
fmrng
источник