Magento 2: Làm thế nào để hiển thị thuộc tính tùy chỉnh trong danh mục?


13

Tôi đã tạo một thuộc tính trường văn bản mới, với các cài đặt sau được đặt thành có:

Visible on Catalog Pages on Storefront
Used in Product Listing

Thuộc tính được gán cho một tập thuộc tính và nó hiển thị trong chế độ xem sản phẩm như dự định.

Tuy nhiên, nó không hiển thị trong chế độ xem danh mục, tôi đang sử dụng chủ đề Luma mặc định và tôi đã xóa bộ nhớ cache và lập chỉ mục lại. Nếu tôi xem tệp mẫu:

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

Tôi không thể tìm thấy bất kỳ mã nào nhận các thuộc tính tùy chỉnh, vì vậy chủ đề Luma dường như không hỗ trợ điều này theo mặc định.

Làm cách nào tôi có thể nhận được nhãn và giá trị thuộc tính tùy chỉnh của sản phẩm trong list.phtml ?

Câu trả lời:


22

Chúng tôi có thể nhận được giá trị thuộc tính tùy chỉnh như dưới đây

Giá trị thuộc tính

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

Nhãn

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

Lưu ý: trong dòng trên c_address là mã thuộc tính tùy chỉnh của tôi.

Tài liệu tham khảo: Magento/Catalog/templates/product/view/attribute.phtml


nó không hoạt động nếu thuộc tính là một media imageloại.
LucScu

@Bilal, đối với tôi các thuộc tính tùy chỉnh đang hiển thị "lỗi nghiêm trọng getFrontend" trong list.phtml. bạn có thể cho tôi biết làm thế nào để tránh lỗi này không nếu bạn có bất kỳ ý tưởng nào
Hitesh Balpande

11

Tôi đã tạo một bài viết về điều này, chỉ có 5 bước để làm điều đó:

1 - Tạo thuộc tính của bạn trong Cửa hàng> Thuộc tính> Sản phẩm .

2 - Đặt thuộc tính trong nhóm Mặc định, đi đến Cửa hàng> Thuộc tính> Bộ thuộc tính .

3 - Đặt giá trị của các thuộc tính này trong các sản phẩm của bạn.

4 - Mở trong chủ đề tùy chỉnh của bạn tệp tương đối bên dưới:

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

5 - Giữa chức năng foreach dán mã này bên dưới, nhưng thay đổi mã thuộc tính chính xác của bạn:

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

if ($_getMyAttr){

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

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

Quan trọng

Hãy chắc chắn rằng Hiển thị có thể nhìn thấy trên Trang xem sản phẩm trên Front-endĐược sử dụng trong Danh sách sản phẩm Các tùy chọn trong cửa hàng Thuộc tính được đặt thành Có.

Tham khảo: https://rafaelstz.github.io/magento/magento2-display-custom-attribution-catalog-list-products.html


Với media imagethuộc tính có thể nhìn thấy trên trang Xem sản phẩm trên Front-end và được sử dụng trong danh sách sản phẩm, không thể cài đặt được.
LucScu

tương tự cho thuộc tính price
CompactCode

Tôi có thể tìm danh sách mặc định ở đâu?
mikebertiean

xin chào, nhãn thuộc tính đang hoạt động với tôi nhưng không phải giá trị thuộc tính
Sarvesh Tiwari

6

Dùng cái này

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

1

@mikebertiean Để tìm danh sách mặc định.phtml điều hướng đến

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

Khi bạn đã sao chép nó và thay đổi nó và thêm nó vào đường dẫn mà Rafael đã đề cập, bạn chỉ cần xóa bộ nhớ cache và nó sẽ hoạt động.


0

Mở

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

Thêm vào sau đây giữa vòng lặp foreach.

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

?>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.