Magento 2: Bagaimana cara menampilkan atribut khusus dalam katalog?

13

Saya telah membuat atribut textfield baru, dengan pengaturan berikut diset ke yes:

Visible on Catalog Pages on Storefront
Used in Product Listing

Atribut ditetapkan ke set atribut dan muncul di tampilan produk sebagaimana dimaksud.

Namun itu tidak terlihat dalam tampilan katalog, saya menggunakan tema Luma default dan saya sudah membersihkan cache dan mengindeks ulang. Jika saya melihat file template:

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

Saya tidak dapat menemukan kode apa pun yang mendapatkan atribut khusus, sehingga tema Luma sepertinya tidak mendukung ini secara default.

Bagaimana saya bisa mendapatkan label atribut khusus dan nilai produk di list.phtml ?

oscarpas
sumber

Jawaban:

22

Kita bisa mendapatkan nilai atribut khusus seperti di bawah ini

Nilai Atribut

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

Label

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

Catatan: pada baris di atas c_address adalah kode atribut khusus saya.

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

Bilal Usean
sumber
itu tidak berfungsi jika atribut adalah media imagetipe.
LucScu
@Bilal, bagi saya atribut khusus menampilkan "kesalahan fatal getFrontend" di list.phtml. dapatkah Anda memberi tahu bagaimana cara menghindari kesalahan ini, silakan, jika Anda punya ide
Hitesh Balpande
11

Saya membuat artikel tentang ini, yang hanya memiliki 5 langkah untuk melakukannya:

1 - Buat atribut Anda di Toko> Atribut> Produk .

2 - Tetapkan atribut dalam grup Default, pergi ke Toko> Atribut> Set Atribut .

3 - Tetapkan nilai atribut ini dalam produk Anda.

4 - Buka di tema khusus Anda file relatif di bawah:

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

5 - Di antara fungsi foreach tempel kode ini di bawah, tetapi ubah kode atribut yang benar:

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

if ($_getMyAttr){

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

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

Penting

Pastikan opsi "Terlihat pada Halaman Tampilan Produk di Front-end" dan "Digunakan dalam Daftar Produk" di bawah Properti etalase diatur ke Ya.

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

Rafael Corrêa Gomes
sumber
Dengan media imageatribut "Terlihat pada Halaman Tampilan Produk di Front-end" dan "Digunakan dalam Daftar Produk" tidak dapat diatur.
LucScu
sama untuk atribut harga
CompactCode
di mana saya dapat menemukan list.phtml default?
mikebertiean
halo, label atribut berfungsi untuk saya tetapi tidak nilai atribut
Sarvesh Tiwari
6

Gunakan ini

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

@mikebertiean Untuk menemukan list.phtml default, arahkan ke

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

Setelah Anda menyalinnya dan mengubahnya dan menambahkannya ke jalur yang disebutkan Rafael, Anda hanya perlu membersihkan cache Anda dan itu akan berhasil.

SYPOMark
sumber
0

Buka

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

Tambahkan berikut ini di antara foreach loop.

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