Câu trả lời:
Một cách khác, cho các thuộc tính tùy chỉnh: chúng ta có thể chỉ cần nhận giá trị bằng cách sử dụng getCustomAttribution ()
if (null !== $product->getCustomAttribute('your_custom_attribute')) {
echo $product->getCustomAttribute('your_custom_attribute')->getValue();
}
Thực hành tốt nhất trong magento là làm điều đó qua xml.
Để có được một thuộc tính tiêu chuẩn, bạn làm một cái gì đó như thế này catalog_product_view.xml
chẳng hạn:
<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>
Điều này sẽ nhận được giá trị của một thuộc tính đầu vào hoặc textarea. Nếu bạn có danh sách thả xuống, bạn nên sử dụng loại văn bản, vì vậy hãy thêm dòng này vào danh sách các đối số:
<argument name="at_type" xsi:type="string">text</argument>
Không cần phải tạo tệp hoặc viết bất kỳ mã php nào để có được một thuộc tính. Bằng cách này, bạn sẽ sử dụng cùng một mã php mặc định cho bất kỳ thuộc tính nào và bạn sẽ chỉ phải thay đổi nó một lần nếu cần.
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$_product = $objectManager->get('Magento\Catalog\Model\Product')->load($product_id);
$_product->getData('attr_code');
Hy vọng nó giúp
Một cách khác trong tập tin phtml:
echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($block->getProduct(), $block->getProduct()->getDescription(), 'description')
như trong: vendor/magento/module-catalog/view/frontend/templates/product/view/description.phtml
Tạo một Khối bên trong catalog_product_view.xml và thêm vào bên trong bất kỳ vùng chứa nào bạn muốn hoặc tạo một vùng chứa xung quanh nó.
<!-- 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>