Magento 2: qu'est-ce que le fichier catalog_attributes.xml?

14

J'ai remarqué que Magento 2 contient plusieurs catalog_attributes.xmlfichiers dans les dossiers suivants:

  • 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

Ces fichiers ressemblent à ceci (exemple pour le Salesfichier):

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

À quoi servent ces fichiers?

Raphael chez Digital Pianism
la source

Réponses:

20

En général, ces fichiers contiennent une liste d'attributs qui servent à différentes fins.
Le groupe used_in_autogenerationdu fichier dans le module de catalogue sert à répertorier les attributs dont la valeur est générée automatiquement.
Ils sont récupérés dans\Magento\Catalog\Helper\Product::getAttributesAllowedForAutogeneration

Le groupe quote_itemreprésente les attributs qui vont être copiés du produit vers l'élément de devis.

unassignable contient la liste des attributs qui ne peuvent pas être désaffectés d'un ensemble d'attributs.

Désolé, mais je ne connais pas tous les groupes disponibles.
Mais vous n'êtes pas limité aux seuls groupes existants. Vous pouvez ajouter les vôtres et les utiliser à votre guise en appelant \Magento\Catalog\Model\Attribute\Config::getAttributeNames('group_name_here'). (mais instanciez d'abord la classe).

[EDIT]
Je ne suis pas sûr de celui - ci, mais que je catalog_categoryet catalog_productgroupes ont les attributs système pour les produits et les catégories.

Marius
la source
9

Pas plus tard qu'hier, je suis tombé dessus pour la première fois. Il est utilisé par exemple pour ajouter des attributs personnalisés pour citer des produits d'articles, sinon ils ne seront pas chargés pour économiser des ressources (dans mon cas, je voulais afficher l' colorattribut sur la page du panier). Dans Magento 1, vous entreriez quelque chose comme ceci dans votre module config.xml:

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

Pour obtenir la même chose en M2, vous devez ajouter un catalog_attributes.xmlà votre module et procédez comme suit:

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