Magento 2: Wie werden benutzerdefinierte Attribute im Katalog angezeigt?

13

Ich habe ein neues Textfeldattribut erstellt, wobei die folgenden Einstellungen auf "Ja" gesetzt sind:

Visible on Catalog Pages on Storefront
Used in Product Listing

Das Attribut ist einem Attributsatz zugeordnet und wird wie vorgesehen in der Produktansicht angezeigt.

In der Katalogansicht ist es jedoch nicht sichtbar. Ich verwende das Standard-Luma-Design und habe den Cache geleert und neu indiziert. Wenn ich die Vorlagendatei ansehe:

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

Ich kann keinen Code finden, der benutzerdefinierte Attribute erhält, daher scheint das Luma-Design dies standardmäßig nicht zu unterstützen.

Wie kann ich eine benutzerdefinierte Produktbezeichnung und einen benutzerdefinierten Wert in list.phtml erhalten ?

oscarpas
quelle

Antworten:

22

Wir können einen benutzerdefinierten Attributwert wie unten erhalten

Attributwert

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

Etikette

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

Hinweis: In der obigen Zeile ist c_address mein benutzerdefinierter Attributcode.

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

Bilal Usean
quelle
Es funktioniert nicht, wenn das Attribut ein media imageTyp ist.
LucScu
@Bilal, für mich zeigen benutzerdefinierte Attribute "fatal error getFrontend" in list.phtml.
Können
11

Ich habe einen Artikel darüber erstellt, der nur 5 Schritte enthält :

1 - Erstellen Sie Ihr Attribut unter Geschäfte> Attribute> Produkt .

2 - Legen Sie das Attribut in der Standardgruppe fest und gehen Sie zu Stores> Attribute> Attribute Set .

3 - Legen Sie die Werte dieser Attribute in Ihren Produkten fest.

4 - Öffnen Sie in Ihrem benutzerdefinierten Design die folgende relative Datei:

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

5 - Fügen Sie zwischen den foreach-Funktionen den folgenden Code ein, ändern Sie jedoch den Code Ihres korrekten Attributs:

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

if ($_getMyAttr){

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

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

Wichtig

Stellen Sie sicher, dass die Optionen "Auf der Produktansichtseite im Front-End sichtbar" und "In der Produktliste verwendet" unter "Storefront-Eigenschaften" auf "Ja" gesetzt sind.

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

Rafael Corrêa Gomes
quelle
Mit den media imageAttributen "Sichtbar auf der Produktansicht Seite im Front-End" und "In der Produktliste verwendet" können nicht eingestellt werden.
LucScu
Gleiches gilt für das
Preisattribut
Wo finde ich die Standardliste list.phtml?
Mikebertiean
Hallo, Attribut Label funktioniert für mich, aber nicht Attributwert
Sarvesh Tiwari
6

Benutze das

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

@mikebertiean Um die Standardliste list.phtml zu finden, navigieren Sie zu

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

Sobald Sie es kopiert und geändert und dem von Rafael erwähnten Pfad hinzugefügt haben, sollten Sie nur noch Ihren Cache leeren müssen, und es wird funktionieren.

SYPOMark
quelle
0

Öffnen

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

Fügen Sie zwischen foreach-Schleife Folgendes hinzu.

<?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;
}

?>
Teja Bhagavan Kollepara
quelle