Câu trả lời:
Tạo một mô-đun tùy chỉnh như mã dưới đây.
tạo một tệp khối mô-đun để có được tên danh mục hiện tại.
<?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');
}
}
?>
tạo một tập tin phtml với mã dưới đây
<?php if ($currentCategory = $block->getCurrentCategory()): ?>
<div class="detail-category-name">
<?php echo $currentCategory->getName(); ?>
</div>
<?php endif; ?>
gọi tập tin phtml ở trên qua tập tin 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>
Và cuối cùng bạn có thể thấy tên danh mục ngay phía trên tên sản phẩm trên trang chi tiết sản phẩm.
Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi.
Bạn sẽ có thể nhận Id của danh mục bằng cách sử dụng phương thức getC CategoryIds () trên sản phẩm. Ví dụ: tham khảo:
\Magento\Catalog\Model\Product::getCategoryIds();
Điều này có nghĩa là về cơ bản bạn sẽ có thể gọi $product->getCategoryIds()
và lọc qua đó trong khối của bạn.
Ngoài ra còn có một phương thức được gọi getCategoryCollection()
trong cùng một mô hình cho phép bạn chuyển qua các danh mục dưới dạng các đối tượng đầy đủ. Nó sẽ loại bỏ người trung gian tải chúng bằng 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();
}
?>