Magento 2: co to jest plik catalog_attributes.xml?

14

Zauważyłem, że Magento 2 zawiera kilka catalog_attributes.xmlplików w następujących folderach:

  • 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

Te pliki wyglądają tak (przykład Salespliku):

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

Do czego służą te pliki?

Raphael at Digital Pianism
źródło

Odpowiedzi:

20

Zasadniczo pliki te zawierają listę atrybutów, które służą różnym celom.
Grupa used_in_autogenerationz pliku w module katalogu służy do wyświetlania atrybutów, których wartość jest generowana automatycznie.
Są pobierane\Magento\Catalog\Helper\Product::getAttributesAllowedForAutogeneration

Grupa quote_itemreprezentuje atrybuty, które zostaną skopiowane z produktu do pozycji oferty.

unassignable zawiera listę atrybutów, których nie można oddzielić od żadnego zestawu atrybutów.

Przepraszam, ale nie znam wszystkich dostępnych grup.
Ale nie jesteś ograniczony tylko do istniejących grup. Możesz dodać własne i używać ich tak, jak chcesz, po prostu dzwoniąc \Magento\Catalog\Model\Attribute\Config::getAttributeNames('group_name_here'). (ale najpierw utwórz instancję klasy).

[EDYCJA]
Nie jestem tego pewien, ale myślę, że grupy catalog_categoryi catalog_productgrupy posiadają atrybuty systemowe produktów i kategorii.

Marius
źródło
9

Jeszcze wczoraj natknąłem się na to po raz pierwszy. Służy na przykład do dodawania niestandardowych atrybutów w celu wyceny produktów, w przeciwnym razie nie zostaną załadowane w celu zaoszczędzenia zasobów (w moim przypadku chciałem wyświetlić coloratrybut na stronie koszyka). W Magento 1 wpisujesz coś takiego do swojego modułu config.xml:

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

Aby osiągnąć to samo w M2, musisz dodać a catalog_attributes.xmldo swojego modułu i wykonać następujące czynności:

<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
źródło