Magento 2: qual é o arquivo catalog_attributes.xml?

14

Notei que o Magento 2 contém vários catalog_attributes.xmlarquivos nas seguintes pastas:

  • 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

Esses arquivos são assim (exemplo para o Salesarquivo):

<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>

Para que servem esses arquivos?

Raphael na Digital Pianism
fonte

Respostas:

20

Em geral, esses arquivos contêm uma lista de atributos que servem a propósitos diferentes.
O grupo used_in_autogenerationdo arquivo no módulo de catálogo serve para listar atributos que possuem o valor gerado automaticamente.
Eles são recuperados em\Magento\Catalog\Helper\Product::getAttributesAllowedForAutogeneration

O grupo quote_itemrepresenta os atributos que serão copiados do produto para o item de cotação.

unassignable contém a lista de atributos que não podem ser desassociados de nenhum conjunto de atributos.

Desculpe, mas não conheço todos os grupos disponíveis.
Mas você não está limitado apenas aos grupos existentes. Você pode adicionar seus próprios e usá-los como quiser, apenas ligando \Magento\Catalog\Model\Attribute\Config::getAttributeNames('group_name_here'). (mas instancie a classe primeiro).

[EDIT]
Eu não tenho certeza sobre isso, mas eu coisa catalog_categorye catalog_productgrupos mantêm os atributos do sistema para produtos e categorias.

Marius
fonte
9

Ontem mesmo deparei com isso pela primeira vez. É usado, por exemplo, para adicionar atributos personalizados às cotações dos produtos, caso contrário eles não serão carregados para economizar recursos (no meu caso, eu queria exibir o coloratributo na página do carrinho). No Magento 1, você digitaria algo assim no seu módulo config.xml:

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

Para conseguir o mesmo no M2, você deve adicionar um catalog_attributes.xmlao seu módulo e fazer o seguinte:

<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
fonte