Como obter o nome da categoria atual do produto no Magento 2 na página de exibição do produto

9

Como obter o nome da categoria atual do produto na Página de exibição do produto acima do Nome do produto. E me dê o local do caminho do arquivo para obter o nome atual da categoria do produto no Magento 2.

Nikul
fonte

Respostas:

10

Crie um módulo personalizado como no código abaixo.

crie um arquivo de bloco de módulo para obter o nome da categoria atual.

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

}
?>

crie um arquivo phtml com o código abaixo

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

chamar acima o arquivo phtml via arquivo 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>

E, finalmente, você pode ver o nome da categoria logo acima do nome do produto na página de detalhes do produto.

Deixe-me saber se você tem alguma dúvida.

Suresh Chikani
fonte
Eu coloquei o código xml em catalog_product_view.xml na referência Product.info.main, mas não consigo ver nenhuma div ou qualquer nome de categoria.
Nikul
Você deve colocá-lo no seu tema default.xml.
Suresh Chikani
Sim, eu tentei colocar em default.xml mas não o seu trabalho ..
Nikul
obrigado. Funciona como um encanto. ter cuidado para o caminho que você está chamando (o meu era "Vendor_Categoryonproduct :: category.phtml) e não se esqueça o arquivo de registro e módulo.
Claudiu Creanga
eu não estou recebendo qualquer resultado
Vijay b
1

Você deve conseguir os IDs da categoria usando o método getCategoryIds () em um produto. Por exemplo, referência:

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

Isso significa que você deve poder chamar $product->getCategoryIds()e filtrar essencialmente isso no seu bloco.

Há também um método chamado getCategoryCollection()no mesmo modelo, que permitiria percorrer as categorias como objetos completos. Deve cortar o homem do meio de carregá-los com os IDs.

Richard Cripps
fonte
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();
            }

        ?>
Baharuni Asif
fonte