製品ビューページのMagento 2で製品の現在のカテゴリ名を取得する方法


9

製品名の上にある製品ビューページで製品の現在のカテゴリ名を取得する方法。Magento 2で現在の製品カテゴリ名を取得するためのファイルパスの場所を教えてください。

回答:


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>

そして最後に、製品詳細ページの製品名のすぐ上にカテゴリ名が表示されます。

ご不明な点がありましたらお知らせください。


Product.info.main refrenceのcatalog_product_view.xmlにXMLコードを配置しましたが、divまたはカテゴリ名が表示されません。
Nikul

テーマの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();
            }

        ?>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.