Es decir, después de un inicio de sesión de usuario aleatorio, debemos saber que el usuario se encuentra en qué página.
Arjun
No es necesario que el usuario inicie sesión. Solo quiero verificar que la página sea página de categoría o página de producto. Como en Magento 1, podemos verificarlo así: $ category = Mage :: Registry ('current_category');
Equipo Magento
Respuestas:
29
Puede probar el siguiente código que podría ayudarlo.
Inyecte una instancia de \Magento\Framework\App\Request\Httpen su constructor de clase.
Si está en un controlador, no necesita hacerlo. Ya puedes acceder así$request = $this->getRequest()
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}
Si lo quiere directamente en el archivo phtml, use así: $ this-> getRequest () -> getFullActionName () aquí está la condición if que usé: if ($ this-> getRequest () -> getFullActionName () == ' catalog_category_view ') {...}
KA9
Hola @Arjun, ¿cómo obtendrías el nombre de la categoría en la que te encuentras?
John
5
Supongo que podemos usar directamente
$this->getRequest()->getFullActionName()
en el archivo .phtml para obtener la acción de la página actual.
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
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
}
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()
Luego puede verificar si es una categoría o producto como este:
fuente
Supongo que podemos usar directamente
en el archivo .phtml para obtener la acción de la página actual.
fuente
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()
Luego puede verificar si es la página de inicio, la página de categoría o la página de producto como esta:
De lo contrario, use directamente en el archivo phtml usando el administrador de objetos
fuente
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.
fuente
puede agregar condicional, como
fuente
getCategoryPage
en Magento 2, al menos no en 2.1.10