Testé fonctionnel Magento 2.3!
ATTENTION: bien que cette méthode soit fonctionnelle, ce billet consigne mes notes sur la façon de créer un Helper pour récupérer sous forme d’objet dans un template PHTML des informations (ID, nom…) sur catégorie produit en cours. Les fichiers ne sont pas forcément placés aux bons endroits par rapport aux bonnes pratiques Magento 2.
Créer un module
Sodifrance_GetCurrentCategory
app/code/Sodifrance/GetCurrentCategory/etc/di.xml
|
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="Magento\Catalog\Model\Layer\Resolver" type="Sodifrance\GetCurrentCategory\Model\Layer\Resolver" /> </config> |
app/code/Sodifrance/GetCurrentCategory/Model/Layer/Resolver.php
Hérité de vendor/magento/module-catalog/Model/Layer/Resolver.php
.
|
<?php namespace Sodifrance\GetCurrentCategory\Model\Layer; class Resolver extends \Magento\Catalog\Model\Layer\Resolver { private $layerResolver; public function getCurrentCategory() { return $this->get()->getCurrentCategory(); } } |
Créer un module
Pdv_Catalog
app/code/Pdv/Catalog/Helper/Data.php
Hérité de vendor/magento/module-catalog/Helper/Data.php
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
<?php namespace Pdv\Catalog\Helper; /** * Catalog data helper * */ class Data extends \Magento\Framework\App\Helper\AbstractHelper { /** * @var \Sodifrance\GetCurrentCategory\Model\Layer\Resolver $resolver */ protected $resolver; public function __construct( \Sodifrance\GetCurrentCategory\Model\Layer\Resolver $resolver ) { $this->resolver = $resolver; } /** * @return \Magento\Catalog\Model\Category */ public function getCurrentCategory() { return $this->resolver->getCurrentCategory(); } } |
app/design/frontend/Sodifrance/pdv/Magento_Catalog/templates/product/list_abonnements.phtml
Hérité de vendor/magento/module-catalog/view/frontend/templates/product/list.phtml
.
Dans le bloc de code suivant:
|
<?php $_productCollection = $block->getLoadedProductCollection(); $_helper = $this->helper('Magento\Catalog\Helper\Output'); $themeSettingConfig = $this->helper('MGS\ThemeSettings\Helper\Config'); $activeTitle = $themeSettingConfig->getStoreConfig('themesettings/page_title/title_toolbar'); $showFilter = $themeSettingConfig->getStoreConfig('mgs_ajaxnavigation/general/always_show'); $activeBreadcrumb = $themeSettingConfig->getStoreConfig('themesettings/page_title/breadcrumb_category'); $moveBreadcrumb = $themeSettingConfig->getStoreConfig('themesettings/page_title/breadcrumb_toolbar'); $_imagehelper = $this->helper('Magento\Catalog\Helper\Image'); $hoverChange = $themeSettingConfig->getStoreConfig('themesettings/catalog/hover_change'); |
…mettre à la suite:
|
/** @var \Magento\Catalog\Model\Category $currentCategory */ $currentCategory = $this->helper('Pdv\Catalog\Helper\Data')->getCurrentCategory(); |
Pour récupérer le nom ou l’ID de la catégorie en cours
La majeure partie des informations récupérables est définie ici: vendor/magento/module-catalog/Model/Category.php
. Mais précisément pour le nom et l’ID de la catégorie en cours:
|
<p><?php echo $currentCategory->getName(); ?></p> <p><?php echo $currentCategory->getId(); ?></p> |
Vous pouvez également utiliser les fonctionnalités d’auto-complétion de votre IDE pour avoir accès à toute la liste des informations contenues dans votre objet PHP $currentCategory
en commençant à taper <?php echo $currentCategory->get
.
