Как получить название текущей категории продукта в Magento 2 на странице просмотра продукта

9

Как получить название текущей категории продукта на странице просмотра продукта над названием продукта. И дайте мне путь к файлу, чтобы получить название текущей категории продукта в Magento 2.

Nikul
источник

Ответы:

10

Создайте пользовательский модуль, как показано ниже.

создайте файл блока модуля, чтобы получить имя текущей категории.

<?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');
    }

}
?>

создать файл phtml с кодом ниже

<?php if ($currentCategory = $block->getCurrentCategory()): ?>
    <div class="detail-category-name">
        <?php echo $currentCategory->getName(); ?>
    </div>
<?php endif; ?>

вызовите выше файл phtml через файл 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>

И, наконец, вы можете увидеть название категории чуть выше названия продукта на странице сведений о продукте.

Дайте мне знать, если у вас есть запрос.

Суреш Чикани
источник
Я положил XML-код в catalog_product_view.xml в ссылке Product.info.main, но я не вижу ни div, ни названия любой категории.
Никуль
Вы должны поместить его в свою тему default.xml.
Суреш Chikani
Да, я пытался положить в default.xml, но он не работает ..
Никуль
Спасибо. работает как шарм. будьте осторожны на пути, по которому вы звоните (у меня был Vendor_Categoryonproduct :: category.phtml) и не забывайте файл регистрации и модуля.
Claudiu Creanga
я не получаю никакого результата
Виджай б
1

Вы должны быть в состоянии получить идентификаторы категории, используя метод getCategoryIds () для продукта. Например, ссылка:

\Magento\Catalog\Model\Product::getCategoryIds();

Это означает, что вы должны иметь возможность по существу вызывать $product->getCategoryIds()и фильтровать это в своем блоке.

Существует также метод, вызываемый getCategoryCollection()в той же модели, который позволит вам переключаться между категориями как полными объектами. Это должно вырезать среднего человека, загружая их с идентификаторами.

Ричард Криппс
источник
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();
            }

        ?>
Бахаруни Асиф
источник