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 ?

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


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


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

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.


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

?>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.