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.