Могу ли я проверить, есть ли пользователь на странице категории или на странице отдельного продукта в Magento 2?
Любая помощь будет принята с благодарностью!
Могу ли я проверить, есть ли пользователь на странице категории или на странице отдельного продукта в 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() == '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 \ 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
}
В противном случае напрямую использовать в файле 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') {// вы находитесь на домашней странице}
if ($ request-> getFullActionName () == 'catalog_product_view') {// вы находитесь на странице продукта}
if ($ request-> getFullActionName () == 'catalog_category_view') {// вы находитесь на странице категории}
и если вы хотите получить текущую категорию и ее данные, вы можете сделать это через
$ category = $ objectManager-> get ('Magento \ Framework \ Registry') -> registry ('current_category');
$ Category-> GetData ( 'schbang_category_name');
где schbang_category_name - это мой пользовательский атрибут категории
Я надеюсь, что это может кому-то помочь.
Вы можете добавить условные, такие как
if ($ this-> getProductPage ()) { // это страница продукта, сделать что-нибудь } elseif ($ this-> getCategoryPage ()) { // это страница категории, делать что-то }
getCategoryPage
Magento 2 нет функции , по крайней мере, в 2.1.10