Je veux vérifier que la page actuelle est la page d'accueil, la page de catégorie, la page de produit et la page cms dans magento 2
Je veux vérifier que la page actuelle est la page d'accueil, la page de catégorie, la page de produit et la page cms dans magento 2
Réponses:
Vous pouvez essayer ceci: 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 si la page d'accueil comme celle-ci est:
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
}
$this->_request->getFullActionName()
et l'utiliser dans le fichier phtml.
De l'intérieur du fichier phtml, cela a fonctionné pour moi:
if ($this->getRequest()->getFullActionName() == 'cms_index_index') {
//you are on the homepage
}
if ($this->getRequest()->getFullActionName() == 'catalog_product_view') {
//you are on the product page
}
if ($this->getRequest()->getFullActionName() == 'catalog_category_view') {
//you are on the category page
}
Essaye celui-là:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('Magento\Framework\App\Action\Context')->getRequest();
if ($request->getFullActionName() == 'cms_index_index') {
// is homepage
}
En raison du modèle de conception Injection de dépendance. Vous créez un module pour demander une ressource à la demande. Le gestionnaire d'objets va à l'encontre de ce paradigme. Cependant, cela fonctionne très bien mais c'est comme utiliser à nouveau Mage - lent.
Essayez le code ci-dessous:
protected $_logo;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Theme\Block\Html\Header\Logo $logo,
array $data = []
)
{
$this->_logo = $logo;
parent::__construct($context, $data);
}
public function isHomePage()
{
return $this->_logo->isHomePage();
}
Utilisation du gestionnaire d'objets
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$logo = $objectManager->get('Magento\Theme\Block\Html\Header\Logo');
var_dump($logo->isHomePage());