Modèle d'enregistrement Magento2 si la page est la page d'accueil
-
29-09-2020 - |
Question
Comment puis-je vérifier directement dans un modèle .phtml si la page demandée est une page d'accueil ?
Je souhaite ajouter conditionnellement une classe à un conteneur donné
La solution
Si vous vérifiez quelle page est la page d'accueil de votre modèle, vous approchez des modèles de magentas et de la mise en page de manière incorrecte.
Mon approche est généralement de créer un block de type de type
Plus d'informations peuvent être trouvées à cette réponse:
https://magento.stackexchange.com/a/30562/336
Une explication plus profonde de ce concept mal compris peut être trouvé sur mon blog ici:
https://blog.philwinkle.com/the- le plus mal compris-concept-in-magento /
Pour une plongée encore plus profonde dans la mise en page de Magento, lisez le livre d'Alan Storm sur le sujet:
http://store.pulsestorm.net/products/no-frilles -magento-mise en page
Autres conseils
Vous pouvez utiliser une instance de \Magento\Framework\App equest\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 ça $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Ensuite, vous pouvez vérifier si la page d'accueil, la page de catégorie ou la page de produit ressemble à ceci :
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 utiliser 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');