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.
Vous devriez pouvoir obtenir les identifiants de catégorie en utilisant la méthode getCategoryIds () sur un produit. Par exemple, référence:
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.la source
la source