¿Hay alguna manera de verificar si un usuario en una página de categoría o una página de producto individual en Magento 2?
Cualquier ayuda sería muy apreciada!
¿Hay alguna manera de verificar si un usuario en una página de categoría o una página de producto individual en Magento 2?
Cualquier ayuda sería muy apreciada!
Respuestas:
Puede probar el siguiente código que podría ayudarlo.
Inyecte una instancia de \Magento\Framework\App\Request\Http
en su constructor de clase.
Si está en un controlador, no necesita hacerlo. Ya puedes acceder así$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Luego puede verificar si es una categoría o producto como este:
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
}
Supongo que podemos usar directamente
$this->getRequest()->getFullActionName()
en el archivo .phtml para obtener la acción de la página actual.
Puede usar la instancia de \ Magento \ Framework \ App \ Request \ Http en el constructor de su clase. Si está en un controlador, no necesita hacerlo.
Ya puedes acceder así $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Luego puede verificar si es la página de inicio, la página de categoría o la página de producto como esta:
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
}
De lo contrario, use directamente en el archivo phtml usando el administrador de objetos
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
Si está utilizando un archivo de plantilla, es decir .phtml, puede llamar directamente a la página con el siguiente código:
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance ();
$ request = $ objectManager-> get ('\ Magento \ Framework \ App \ Request \ Http');
if ($ request-> getFullActionName () == 'cms_index_index') {// estás en la página de inicio}
if ($ request-> getFullActionName () == 'catalog_product_view') {// estás en la página del producto}
if ($ request-> getFullActionName () == 'catalog_category_view') {// estás en la página de categoría}
y si desea obtener una categoría actual y sus datos, puede hacerlo a través de
$ category = $ objectManager-> get ('Magento \ Framework \ Registry') -> Registry ('current_category');
$ category-> getData ('schbang_category_name');
donde schbang_category_name es mi atributo de categoría personalizado
Espero que esto pueda ayudar a alguien.
puede agregar condicional, como
if ($ this-> getProductPage ()) { // esta es una página de producto, haz algunas cosas } elseif ($ this-> getCategoryPage ()) { // esta es una página de categoría, haz algunas cosas }
getCategoryPage
en Magento 2, al menos no en 2.1.10