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 ?

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


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


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

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.


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

?>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.