Magento 2: Как проверить, находимся ли мы на странице категории или странице продукта?
Есть ли способ проверить, есть ли пользователь на странице категории или на отдельной странице продукта в Magento 2?
Мы будем очень признательны за любую помощь!
5 answers
Вы можете попробовать ниже код, который может вам помочь.
Вставьте экземпляр \Magento\Framework\App\Request\Http
в конструктор класса .
Если вы находитесь в контроллере, вам не нужно этого делать. Вы уже можете получить к нему доступ следующим образом $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Затем вы можете проверить, является ли категорией или продуктом следующим образом:
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->getRequest()->getFullActionName()
В файле .phtml, чтобы получить текущее действие страницы.
Вы можете использовать экземпляр \Magento\Framework\Приложение\Запрос\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
}
В противном случае напрямую используйте в файле phtml с помощью диспетчера объектов
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
Если вы используете файл шаблона, т.е. .phtml, то вы можете напрямую позвонить на страницу, используя приведенный ниже код:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
if ($request->getFullActionName() == 'cms_index_index') {
//you are on the homepage
}
if ($request->getFullActionName() == 'catalog_product_view') {
//you are on the product page
}
if ($request->getFullActionName() == 'catalog_category_view') {
//you are on the category page
}
И если вы хотите получить текущую категорию и ее данные, вы можете сделать это через
$category = $objectManager->get('Magento\Framework\Registry')->registry('current_category');
$category->getData('schbang_category_name');
Где schbang_category_name
- мой пользовательский атрибут категории
Я надеюсь, что это может кому-то помочь.
Вы можете добавить условные, такие как
if($this->getProductPage()) { //this is a product page, do some stuff } elseif($this->getCategoryPage()) { //this is a category page, do some stuff }