Yanıtlar:
Özel nitelikler için başka bir yol: getCustomAttribute () kullanarak değeri alabiliriz
if (null !== $product->getCustomAttribute('your_custom_attribute')) {
echo $product->getCustomAttribute('your_custom_attribute')->getValue();
}
Magento'daki en iyi uygulama xml ile yapmaktır.
Standart bir özellik elde etmek için aşağıdakine benzer bir şey yaparsınız 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>
Bu, bir girdi özniteliğinin veya metin alanının değerini alır. Bir açılır listeniz varsa metin türünü kullanmalısınız, bu nedenle bu satırı bağımsız değişkenler listesine ekleyin:
<argument name="at_type" xsi:type="string">text</argument>
Bir özellik almak için dosya oluşturmaya veya herhangi bir php kodu yazmaya gerek yok. Bu şekilde, herhangi bir özellik için aynı varsayılan php kodunu kullanırsınız ve gerekirse yalnızca bir kez değiştirmeniz gerekir.
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$_product = $objectManager->get('Magento\Catalog\Model\Product')->load($product_id);
$_product->getData('attr_code');
Umarım yardımcı olur
Phtml dosyalarında başka bir yol:
echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($block->getProduct(), $block->getProduct()->getDescription(), 'description')
de olduğu gibi: vendor/magento/module-catalog/view/frontend/templates/product/view/description.phtml
Catalog_product_view.xml içinde bir Blok oluşturma ve istediğiniz herhangi bir kabın içine ekleme veya etrafında bir kap oluşturma.
<!-- 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>