Ich möchte überprüfen, ob die aktuelle Seite die Startseite, die Kategorieseite, die Produktseite und die CMS-Seite in Magento 2 ist
Ich möchte überprüfen, ob die aktuelle Seite die Startseite, die Kategorieseite, die Produktseite und die CMS-Seite in Magento 2 ist
Antworten:
Sie können Folgendes versuchen: Injizieren Sie eine Instanz von \Magento\Framework\App\Request\Http
in Ihren Klassenkonstruktor. Wenn Sie sich in einem Controller befinden, müssen Sie dies nicht tun. Sie können bereits so darauf zugreifen$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Dann können Sie überprüfen, ob die Homepage wie folgt ist:
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()
Anzeige zurückgibt. Verwenden Sie sie in der HTML-Datei.
Aus der HTML-Datei heraus funktionierte dies für mich:
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
}
Probier diese:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('Magento\Framework\App\Action\Context')->getRequest();
if ($request->getFullActionName() == 'cms_index_index') {
// is homepage
}
Aufgrund des Entwurfsmusters Dependency Injection. Sie erstellen ein Modul, um eine Ressource bei Bedarf anzufordern. Der Objektmanager widerspricht diesem Paradigma. Es funktioniert zwar großartig, aber es ist, als würde man Mage immer wieder verwenden - langsam.
Versuchen Sie den folgenden Code:
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();
}
Verwenden des Objektmanagers
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$logo = $objectManager->get('Magento\Theme\Block\Html\Header\Logo');
var_dump($logo->isHomePage());