Jawaban:
Buat modul khusus seperti kode di bawah ini.
buat file blok modul untuk mendapatkan nama kategori saat ini.
<?php
namespace Namespace\Modulename\Block;
class Blockname extends \Magento\Framework\View\Element\Template
{
protected $_registry;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\Registry $registry,
array $data = []
)
{
$this->_registry = $registry;
parent::__construct($context, $data);
}
public function getCurrentCategory()
{
return $this->_registry->registry('current_category');
}
}
?>
buat file phtml dengan kode di bawah ini
<?php if ($currentCategory = $block->getCurrentCategory()): ?>
<div class="detail-category-name">
<?php echo $currentCategory->getName(); ?>
</div>
<?php endif; ?>
panggil file phtml di atas melalui file xml.
<referenceContainer name="product.info.main">
<block class="Namespace\Modulename\Block\Blockname" name="product.category.name" template="Magento_Catalog::product/view/yourfilename.phtml" >
</block>
</referenceContainer>
Dan akhirnya Anda dapat melihat nama kategori tepat di atas nama produk pada halaman detail produk.
Beri tahu saya jika Anda memiliki pertanyaan.
Anda harus bisa mendapatkan id kategori dengan menggunakan metode getCategoryIds () pada suatu produk. Sebagai contoh, referensi:
\Magento\Catalog\Model\Product::getCategoryIds();
Ini berarti bahwa Anda pada dasarnya harus dapat memanggil $product->getCategoryIds()
dan memfilternya di blok Anda.
Ada juga metode yang disebut getCategoryCollection()
dalam model yang sama yang memungkinkan Anda untuk menelusuri kategori sebagai objek penuh. Itu harus memotong orang tengah memuat mereka dengan ID.
**Add XML Code Theme/namespace/Magento_Catalog/templates/product/view**
<block class="Magento\Catalog\Block\Product\View" name="product.info.category" after="product.price.final" template="product/view/current_category.phtml" />
**Create New File Theme/namespace/Magento_Catalog/templates/product/view**
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');
$categories = $product->getCategoryIds(); /*will return category ids array*/
foreach($categories as $category){
$cat = $objectManager->create('Magento\Catalog\Model\Category')->load($category);
echo $cat->getName();
}
?>