Answers:
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>
这将获取输入属性或textarea的值。如果您有下拉菜单,则应使用文本类型,因此请在参数列表中添加以下行:
<argument name="at_type" xsi:type="string">text</argument>
无需创建文件或编写任何php代码即可获得属性。这样,您将对任何属性使用相同的默认php代码,并且仅在需要时只需更改一次。
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$_product = $objectManager->get('Magento\Catalog\Model\Product')->load($product_id);
$_product->getData('attr_code');
希望能帮助到你
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
在catalog_product_view.xml内创建一个Block,并在所需的任何容器内添加或在其周围创建一个容器。
<!-- 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>