마 젠토 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


attribute가 media image유형 이면 작동하지 않습니다 .
LucScu

@Bilal, 사용자 정의 속성이 list.phtml에 "치명적 오류 getFrontend"를 표시합니다. 당신이 어떤 아이디어가 있다면 제발이 오류를 피하는 방법을 알려주십시오
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

안녕하세요, 속성 라벨은 나를 위해 노력하지만 속성 값은 아닙니다
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

복사하고 변경하여 Rafael가 언급 한 경로에 추가 한 후에는 캐시를 플러시하면 작동합니다.


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

?>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.