Cómo obtener el nombre de la categoría actual del producto en Magento 2 en la página de vista del producto

9

Cómo obtener el nombre de la categoría actual del producto en la página de vista del producto sobre el nombre del producto. Y dame la ubicación de la ruta del archivo para obtener el nombre de categoría del producto actual en Magento 2.

Nikul
fuente

Respuestas:

10

Cree un módulo personalizado como el siguiente código.

cree un archivo de bloque de módulo para obtener el nombre de categoría actual.

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

}
?>

crear un archivo phtml con el siguiente código

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

llame al archivo phtml anterior a través del archivo 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>

Y finalmente puede ver el nombre de la categoría justo encima del nombre del producto en la página de detalles del producto.

Avísame si tienes alguna consulta.

Suresh Chikani
fuente
He puesto el código xml en catalog_product_view.xml en Product.info.principal referencia pero no puedo ver ningún div ni ningún nombre de categoría.
Nikul
Tienes que ponerlo en tu tema default.xml.
Suresh Chikani
Sí, he intentado poner en default.xml pero no funciona ...
Nikul
Gracias. Funciona de maravilla. tenga cuidado con la ruta que está llamando (la mía era "Vendor_Categoryonproduct :: category.phtml) y no olvide el registro y el archivo del módulo."
Claudiu Creanga
no obtengo ningún resultado
vijay b
1

Debería poder obtener los Id. De categoría utilizando el método getCategoryIds () en un producto. Por ejemplo, referencia:

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

Esto significa que deberías poder llamar $product->getCategoryIds()y filtrar esencialmente eso en tu bloque.

También hay un método llamado getCategoryCollection()en el mismo modelo que le permitiría recorrer las categorías como objetos completos. Debería cortar al intermediario de cargarlos con los Id.

Richard Cripps
fuente
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
fuente