Cách nhận tên danh mục sản phẩm hiện tại trong Magento 2 trong trang xem sản phẩm


9

Cách nhận Tên danh mục sản phẩm hiện tại trong Trang xem sản phẩm phía trên Tên sản phẩm. Và cung cấp cho tôi đường dẫn tệp Vị trí để nhận Tên Danh mục Sản phẩm Hiện tại trong Magento 2.

Câu trả lời:


10

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.


Tôi đã đặt mã xml trong catalog_product_view.xml trong Product.info.main Revence nhưng tôi không thể thấy bất kỳ div hoặc bất kỳ tên danh mục nào.
Nikul

Bạn phải đặt nó trong default.xml chủ đề của bạn.
Suresh Chikani

Có, tôi đã cố gắng đặt vào default.xml nhưng nó không hoạt động ..
Nikul

cảm ơn. hoạt động như một lá bùa. hãy cẩn thận với con đường bạn đang gọi (của tôi là "Vendor_Cargetonproduct :: category.phtml) và đừng quên đăng ký và tập tin mô-đun.
Claudiu Creanga

tôi không nhận được kết quả nào
vijay b

1

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.


0
**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();
            }

        ?>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.