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

@Bilal, для мене користувацькі атрибути показують "fatal error errorFrontend" у 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атрибутами "Видно на сторінці перегляду продукту на передній частині" та "Використовується в переліку продуктів" не можна встановити.
LucScu

те ж за ціновим атрибутом
CompactCode

де я можу знайти list.phtml за замовчуванням?
mikebertiean

привіт, ярлик атрибутів працює для мене, але не має значення атрибута
Сарвеш Тіварі

6

Використовуй це

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

1

@mikebertiean Щоб знайти список default.phtml за замовчуванням, перейдіть до

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

Після того, як ви скопіювали його та змінили та додали до шляху, про який згадував Рафаель, вам просто потрібно буде промити кеш, і він спрацює.


0

відчинено

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

Додайте наступне між циклом 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;
}

?>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.