Я хочу проверить, что текущая страница - это домашняя страница, страница категории, страница продукта и страница cms в magento 2
Я хочу проверить, что текущая страница - это домашняя страница, страница категории, страница продукта и страница cms в magento 2
Ответы:
Вы можете попробовать это: внедрить экземпляр \Magento\Framework\App\Request\Httpвашего конструктора класса. Если вы находитесь в контроллере, вам не нужно это делать. Вы уже можете получить к нему доступ, как это$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Тогда вы можете проверить, является ли домашняя страница такой:
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()объявление, использовать его в файле phtml.
Внутри phtml файла это работает для меня:
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
}
Попробуй это:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('Magento\Framework\App\Action\Context')->getRequest();
if ($request->getFullActionName() == 'cms_index_index') {
// is homepage
}
Из-за шаблона проектирования Dependency Injection. Вы создаете модуль для запроса ресурса по запросу. Менеджер объектов идет против этой парадигмы. Тем не менее, он отлично работает, но все равно, что использовать Mage снова и снова - медленно.
Попробуйте код ниже:
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();
}
Использование диспетчера объектов
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$logo = $objectManager->get('Magento\Theme\Block\Html\Header\Logo');
var_dump($logo->isHomePage());