제품보기 페이지의 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; ?>

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>

마지막으로 제품 세부 사항 페이지에서 제품 이름 바로 위에 카테고리 이름이 표시됩니다.

문의 사항이 있으면 알려주세요.


Product.info.main refrence의 catalog_product_view.xml에 xml 코드를 넣었지만 div 또는 범주 이름을 볼 수 없습니다.
Nikul

테마 default.xml에 넣어야합니다.
Suresh Chikani

네, default.xml에 넣으려고했지만 작동하지 않습니다.
Nikul

감사. 매력처럼 작동합니다. 전화를 걸고있는 경로에주의를 기울이고 (광산은 "Vendor_Categoryonproduct :: category.phtml") 등록 및 모듈 파일을 잊지 마십시오.
Claudiu 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.