Magento 2: วิธีการแสดงคุณสมบัติที่กำหนดเองในแคตตาล็อก?


13

ฉันได้สร้างแอททริบิวข้อความใหม่โดยมีการตั้งค่าต่อไปนี้เป็นใช่:

Visible on Catalog Pages on Storefront
Used in Product Listing

มีการกำหนดแอตทริบิวต์ให้กับชุดของแอตทริบิวต์และแสดงในมุมมองผลิตภัณฑ์ตามที่ต้องการ

อย่างไรก็ตามมันไม่สามารถมองเห็นได้ในมุมมองแคตตาล็อกฉันใช้ธีม Luma เริ่มต้นและฉันได้ล้างแคชและจัดทำดัชนีใหม่แล้ว ถ้าฉันดูไฟล์เทมเพลต:

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

ฉันไม่พบรหัสใด ๆ ที่ได้รับคุณสมบัติที่กำหนดเองดังนั้นชุดรูปแบบ Luma ดูเหมือนจะไม่สนับสนุนสิ่งนี้ตามค่าเริ่มต้น

ฉันจะรับป้ายกำกับและแอตทริบิวต์ของผลิตภัณฑ์ที่กำหนดเองในlist.phtml ได้อย่างไร

คำตอบ:


22

เราสามารถรับค่าแอตทริบิวต์ที่กำหนดเองได้ด้านล่าง

ค่าคุณสมบัติ

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

ฉลาก

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

หมายเหตุ: ในบรรทัดด้านบนc_addressเป็นรหัสแอตทริบิวต์ที่กำหนดเองของฉัน

อ้างอิง: Magento/Catalog/templates/product/view/attribute.phtml


ไม่สามารถใช้งานได้หากแอตทริบิวต์เป็นmedia imageประเภท
LucScu

@Balal สำหรับฉันแอตทริบิวต์ที่กำหนดเองกำลังแสดง "ข้อผิดพลาดร้ายแรง getFrontend" ใน list.phtml คุณช่วยบอกได้ไหมว่าจะหลีกเลี่ยงข้อผิดพลาดนี้ได้ไหมถ้าคุณมีความคิด
Hitesh Balpande

11

ฉันสร้างบทความเกี่ยวกับเรื่องนี้ซึ่งมีเพียง5 ขั้นตอนในการทำ:

1 - สร้างแอตทริบิวต์ของคุณได้ในร้านค้า> คุณสมบัติ> สินค้า

2 - ชุดแอตทริบิวต์ในกลุ่มเริ่มต้นให้ไปที่ร้านค้า> คุณสมบัติ> ตั้งค่าแอตทริบิวต์

3 - ตั้งค่าของคุณลักษณะนี้ในผลิตภัณฑ์ของคุณ

4 - เปิดไฟล์ที่เกี่ยวข้องในธีมที่กำหนดเองของคุณด้านล่าง:

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

5 - ระหว่างฟังก์ชัน foreach ให้วางรหัสนี้ด้านล่าง แต่เปลี่ยนรหัสของแอตทริบิวต์ที่ถูกต้องของคุณ:

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

if ($_getMyAttr){

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

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

สิ่งสำคัญ

ตรวจสอบให้แน่ใจว่าตัวเลือก“ มองเห็นได้ในหน้ามุมมองผลิตภัณฑ์ในส่วนหน้า” และ“ ใช้ในรายการผลิตภัณฑ์”ภายใต้คุณสมบัติหน้าร้านตั้งเป็นใช่

การอ้างอิง: https://rafaelstz.github.io/magento/magento2-display-custom-attribute-catalog-list-products.html


ด้วยmedia imageแอตทริบิวต์” ไม่สามารถดูได้บนหน้ามุมมองผลิตภัณฑ์บน Front-end” และ“ ใช้ในรายการผลิตภัณฑ์”
LucScu

เดียวกันสำหรับแอตทริบิวต์ price
CompactCode

ฉันจะหาลิสต์เริ่มต้นได้ที่ไหน
mikebertiean

สวัสดีป้ายกำกับคุณลักษณะทำงานให้ฉัน แต่ไม่ใช่ค่าแอตทริบิวต์
Sarvesh Tiwari

6

ใช้สิ่งนี้

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

1

@mikebertiean หากต้องการค้นหา list.phtml ค่าเริ่มต้นให้ไปที่

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

เมื่อคุณคัดลอกและแก้ไขและเพิ่มลงในเส้นทางที่ราฟาเอลกล่าวถึงคุณควรล้างแคชของคุณและจะใช้งานได้


0

เปิด

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

เพิ่มต่อไปนี้ระหว่าง 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;
}

?>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.