如何在产品视图页面的Magento 2中获取产品当前类别名称


9

如何在产品名称上方的“产品视图”页面中获取产品当前类别名称。并给我文件路径位置以获取Magento 2中的当前产品类别名称。

Answers:


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; ?>

通过xml文件在phtml文件上方调用。

<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代码放在Product.info.main的catalog_product_view.xml中,但是我看不到任何div或任何类别名称。
Nikul,2016年

您必须将其放在主题default.xml中。
Suresh Chikani

是的,我曾尝试在default.xml中放,但它不是工作..
Nikul

谢谢。奇迹般有效。要小心在你调用路径(我的是“Vendor_Categoryonproduct :: category.phtml),不要忘了登记和模块文件。
克劳迪乌Creanga

我没有得到任何结果
vijay b

1

通过使用产品上的getCategoryIds()方法,您应该能够获得类别ID。例如,参考:

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

这意味着您应该基本上可以调用$product->getCategoryIds()和过滤块中的内容。

getCategoryCollection()在同一模型中还有一个方法,该方法可让您以完整对象的形式循环浏览类别。它应该减少将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();
            }

        ?>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.