Comment obtenir le nom de la catégorie actuelle du produit dans Magento 2 dans la page d'affichage du produit

9

Comment obtenir le nom de la catégorie actuelle du produit dans la page d'affichage du produit au-dessus du nom du produit. Et donnez-moi l'emplacement du chemin du fichier pour obtenir le nom de la catégorie de produit actuelle dans Magento 2.

Nikul
la source

Réponses:

10

Créez un module personnalisé comme le code ci-dessous.

créer un fichier de bloc de module pour obtenir le nom de la catégorie actuelle.

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

}
?>

créer un fichier phtml avec le code ci-dessous

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

appeler le fichier phtml ci-dessus via le fichier 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>

Et enfin, vous pouvez voir le nom de la catégorie juste au-dessus du nom du produit sur la page de détails du produit.

Faites-moi savoir si vous avez des questions.

Suresh Chikani
la source
j'ai mis le code xml dans catalog_product_view.xml dans Product.info.main refrence mais je ne peux pas voir de div ou de nom de catégorie.
Nikul
Vous devez le mettre dans votre thème default.xml.
Suresh Chikani
Oui, j'ai essayé de mettre dans default.xml mais cela ne fonctionne pas ..
Nikul
Merci. fonctionne comme un charme. soyez prudent sur le chemin que vous appelez (le mien était "Vendor_Categoryonproduct :: category.phtml) et n'oubliez pas le fichier d'enregistrement et de module.
Claudiu Creanga
je n'obtiens aucun résultat
vijay b
1

Vous devriez pouvoir obtenir les identifiants de catégorie en utilisant la méthode getCategoryIds () sur un produit. Par exemple, référence:

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

Cela signifie que vous devriez pouvoir essentiellement appeler $product->getCategoryIds()et filtrer à travers cela dans votre bloc.

Il existe également une méthode appelée getCategoryCollection()dans le même modèle qui vous permettrait de parcourir les catégories en tant qu'objets complets. Cela devrait empêcher l'homme intermédiaire de les charger avec les identifiants.

Richard Cripps
la source
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
la source