마 젠토 2-제품의 속성을 얻는 방법?


답변:


15

사용자 정의 속성의 또 다른 방법 : getCustomAttribute () 를 사용하여 간단히 값을 얻을 수 있습니다.

if (null !== $product->getCustomAttribute('your_custom_attribute')) {
   echo $product->getCustomAttribute('your_custom_attribute')->getValue();
}

19

magento의 모범 사례는 xml을 통해 수행하는 것입니다.

표준 속성을 얻으려면 catalog_product_view.xml예를 들어 다음과 같이하십시오 .

<referenceContainer name="product.info.main">
    <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.brand" template="product/view/attribute.phtml" before="-">
        <arguments>
            <argument name="at_call" xsi:type="string">getBrand</argument>
            <argument name="at_code" xsi:type="string">brand</argument>
            <argument name="css_class" xsi:type="string">brand</argument>
            <argument name="at_label" xsi:type="string">none</argument>
            <argument name="add_attribute" xsi:type="string">itemprop="brand"</argument>
        </arguments>
    </block>
</referenceContainer>

입력 속성 또는 텍스트 영역의 값을 가져옵니다. 드롭 다운이있는 경우 텍스트 유형을 사용해야하므로 인수 목록에이 행을 추가하십시오.

<argument name="at_type" xsi:type="string">text</argument>

속성을 얻기 위해 파일을 만들거나 PHP 코드를 작성할 필요가 없습니다. 이렇게하면 모든 속성에 동일한 기본 PHP 코드를 사용하고 필요한 경우 한 번만 변경해야합니다.


3
솔루션과 같이 <referenceBlock을 <referenceContainer로 변경했으며 "product.info.main"은 컨테이너로 작동했습니다. :)
Devtype

12

내 문제에 대한 해결책이있었습니다.

$product = $this->productRepository->getById($product);
$attr = $product->getData('status');

7
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$_product = $objectManager->get('Magento\Catalog\Model\Product')->load($product_id);
$_product->getData('attr_code');

그것이 도움이되기를 바랍니다.


1
"Magento \ Catalog \ Block \ Product \ View \ Description"과 같은 블록 클래스를 사용하십시오. 그러나 최후의 수단이 아닌 한 Magento 2에서 개체 관리자를 사용하지 않는 것이 좋습니다.
다이너마이트

5

phtml 파일의 다른 방법 :

echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($block->getProduct(), $block->getProduct()->getDescription(), 'description')

에서와 같이 : vendor/magento/module-catalog/view/frontend/templates/product/view/description.phtml


거의 항상 권장하지 않는 객체 관리자를 사용하는 것보다이 방법이 더 좋습니다. +1
다이너마이트

내가 찾은 최고의 솔루션. +1 : D
jehzlau 2016 년

1

catalog_product_view.xml 내에 블록을 작성하고 원하는 컨테이너 내부에 추가하거나 주위에 컨테이너를 작성하십시오.

<!-- Get a attribute -->
<block class="Magento\Catalog\Block\Product\View\Description" name="product.attributes.Height" template="product/view/attribute.phtml" before="-">
    <arguments>
        <argument name="at_call" xsi:type="string">getHeight</argument>
        <argument name="at_code" xsi:type="string">height</argument>
        <argument name="css_class" xsi:type="string">height</argument>
        <argument name="at_label" xsi:type="string">none</argument>
        <argument name="add_attribute" xsi:type="string">itemprop="Height"</argument>
    </arguments>
</block>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.