Existe-t-il un moyen de vérifier que si un utilisateur sur une page de catégorie ou une page de produit individuelle dans Magento 2?
Toute aide serait grandement appréciée!
Existe-t-il un moyen de vérifier que si un utilisateur sur une page de catégorie ou une page de produit individuelle dans Magento 2?
Toute aide serait grandement appréciée!
Réponses:
Vous pouvez essayer le code ci-dessous, cela pourrait vous aider.
Injectez une instance de \Magento\Framework\App\Request\Http
dans votre constructeur de classe.
Si vous êtes dans un contrôleur, vous n'avez pas besoin de le faire. Vous pouvez déjà y accéder comme ceci$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Ensuite, vous pouvez vérifier s'il s'agit d'une catégorie ou d'un produit comme celui-ci:
if ($this->_request->getFullActionName() == 'catalog_product_view') {
//you are on the product page
}
if ($this->_request->getFullActionName() == 'catalog_category_view') {
//you are on the category page
}
Je suppose que nous pouvons utiliser directement
$this->getRequest()->getFullActionName()
dans le fichier .phtml pour obtenir l'action de la page en cours.
Vous pouvez utiliser l'instance de \ Magento \ Framework \ App \ Request \ Http dans votre constructeur de classe. Si vous êtes dans un contrôleur, vous n'avez pas besoin de le faire.
Vous pouvez déjà y accéder comme ceci $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Ensuite, vous pouvez vérifier s'il s'agit d'une page d'accueil ou d'une page de catégorie ou d'une page de produit comme celle-ci:
if ($this->_request->getFullActionName() == 'cms_index_index') {
//you are on the homepage
}
if ($this->_request->getFullActionName() == 'catalog_product_view') {
//you are on the product page
}
if ($this->_request->getFullActionName() == 'catalog_category_view') {
//you are on the category page
}
Sinon, utilisez directement dans le fichier phtml en utilisant le gestionnaire d'objets
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
Si vous utilisez un fichier modèle, par exemple .phtml, vous pouvez directement appeler sur la page en utilisant le code ci-dessous:
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance ();
$ request = $ objectManager-> get ('\ Magento \ Framework \ App \ Request \ Http');
if ($ request-> getFullActionName () == 'cms_index_index') {// vous êtes sur la page d'accueil}
if ($ request-> getFullActionName () == 'catalog_product_view') {// vous êtes sur la page du produit}
if ($ request-> getFullActionName () == 'catalog_category_view') {// vous êtes sur la page de catégorie}
et si vous obtenez une catégorie actuelle et ses données, vous pouvez le faire via
$ category = $ objectManager-> get ('Magento \ Framework \ Registry') -> Registry ('current_category');
$ category-> getData ('nom_catégorie_schbang');
où schbang_category_name est mon attribut de catégorie personnalisé
J'espère que cela pourrait aider quelqu'un.
vous pouvez ajouter des conditions, telles que
if ($ this-> getProductPage ()) { // c'est une page de produit, faites des trucs } elseif ($ this-> getCategoryPage ()) { // c'est une page de catégorie, faites des trucs }
getCategoryPage
nulle part dans Magento 2, du moins pas dans 2.1.10