Magento 2: Jak wyświetlić niestandardowy atrybut w katalogu?


13

Utworzyłem nowy atrybut pola tekstowego z następującymi ustawieniami ustawionymi na tak:

Visible on Catalog Pages on Storefront
Used in Product Listing

Atrybut jest przypisany do zestawu atrybutów i pojawia się w widoku produktu zgodnie z przeznaczeniem.

Jednak nie jest to widoczne w widoku katalogu, używam domyślnego motywu Luma , wyczyściłem pamięć podręczną i ponownie zindeksowałem. Jeśli wyświetlę plik szablonu:

magento-catalog/view/frontend/templates/product/list.phtml

Nie mogę znaleźć żadnego kodu, który uzyska niestandardowe atrybuty, więc motyw Luma domyślnie nie obsługuje tego.

Jak uzyskać niestandardową etykietę i wartość atrybutu produktów w pliku list.phtml ?

Odpowiedzi:


22

Możemy uzyskać niestandardową wartość atrybutu jak poniżej

Wartość atrybutu

<?php /* @escapeNotVerified */ echo $_product->getResource()->getAttribute('c_address')->getFrontend()->getValue($_product); ?>

Etykieta

$address =$_product->getResource()->getAttribute('c_address')->getStoreLabel();

Uwaga: w powyższej linii c_address to mój niestandardowy kod atrybutu.

Odniesienie: Magento/Catalog/templates/product/view/attribute.phtml


nie działa, jeśli atrybut jest media imagetypem.
— LucScu,

@Bilal, dla mnie niestandardowe atrybuty pokazują „fatal error getFrontend” w list.phtml. czy możesz powiedzieć, jak uniknąć tego błędu, jeśli masz jakiś pomysł
— Hitesh Balpande

11

Stworzyłem artykuł na ten temat, który ma tylko 5 kroków :

1 - Utwórz swój atrybut w Sklepy> Atrybuty> Produkt .

2 - Ustaw atrybut w grupie Domyślne, przejdź do Sklepy> Atrybuty> Zestaw atrybutów .

3 - Ustaw wartości tych atrybutów w swoich produktach.

4 - Otwórz w swoim motywie niestandardowym plik względny poniżej:

app/design/frontend/CUSTOM/THEME/Magento_Catalog/templates/product/list.phtml

5 - Pomiędzy funkcją foreach wklej poniższy kod, ale zmieniając kod swojego poprawnego atrybutu:

$_getMyAttr = $_product->getResource()->getAttribute('my_attribute');

if ($_getMyAttr){

    // Get Value
    $attrTestValue = $_getMyAttr->getFrontend()->getValue($_product);

    // Get Label
    $attrTestLabel = $_getMyAttr->getStoreLabel();
}

Ważny

Upewnij się, że opcje „Widoczny na stronie widoku produktu w interfejsie” i „Używany na liście produktów” w oknie Właściwości sklepu są ustawione na Tak.

Odniesienie: https://rafaelstz.github.io/magento/magento2-display-custom-attribute-catalog-list-products.html


Z media imageatrybutem „Widoczny na stronie widoku produktu w interfejsie” i „Używany na liście produktów” nie można ustawić.
— LucScu,

to samo dla atrybutu ceny
— CompactCode,

gdzie mogę znaleźć domyślny list.phtml?
— mikebertiean

cześć, etykieta atrybutu działa dla mnie, ale nie wartość atrybutu
— Sarvesh Tiwari

6

Użyj tego

$attribute = $_product->getResource()->getAttribute('identifier'); 
if ($attribute) 
{ 
$attr_value = $attribute ->getFrontend()->getValue($_product); 
}

1

@ Mikebertiean Aby znaleźć domyślny list.phtml, przejdź do

<Magento base>/vendor/magento/module-catalog/view/frontend/templates/product

Po skopiowaniu go i zmianie i dodaniu go do ścieżki, o której wspomniał Rafael, wystarczy opróżnić pamięć podręczną i będzie działać.


0

otwarty

app/design/frontend/CUSTOM/THEME/Magento_Catalog/templates/product/list.phtml

Dodaj następujące elementy między pętlą foreach.

<?php

$brand_attribute = $_product->getResource()->getAttribute('brand');

if ($brand_attribute){

    // Get Value
    $brand_value = $brand_attribute->getFrontend()->getValue($_product);

    // Get Label
    $brand_lable = $brand_attribute->getStoreLabel();
    echo $brand_lable." : ".$brand_value;
}

?>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.