Existe uma maneira de verificar se um usuário em uma página de categoria ou uma página de produto individual no Magento 2?
Qualquer ajuda seria muito apreciada!
Existe uma maneira de verificar se um usuário em uma página de categoria ou uma página de produto individual no Magento 2?
Qualquer ajuda seria muito apreciada!
Respostas:
Você pode tentar o código abaixo, que pode ajudá-lo.
Injete uma instância de \Magento\Framework\App\Request\Http
no seu construtor de classe.
Se você estiver em um controlador, não precisará fazê-lo. Você já pode acessá-lo assim$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Então você pode verificar se é categoria ou produto 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
}
Eu acho que podemos usar diretamente
$this->getRequest()->getFullActionName()
no arquivo .phtml para obter a ação atual da página.
Você pode usar a instância de \ Magento \ Framework \ App \ Request \ Http no seu construtor de classes. Se você estiver em um controlador, não precisará fazê-lo.
Você já pode acessá-lo assim $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Em seguida, você pode verificar se é a página inicial ou a página da categoria ou a página do produto 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
}
Caso contrário, use diretamente no arquivo phtml usando o gerenciador de objetos
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
Se você estiver usando um arquivo de modelo, por exemplo, .phtml, diretamente, poderá ligar na página usando o código abaixo:
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance ();
$ request = $ objectManager-> get ('\ Magento \ Framework \ App \ Request \ Http');
if ($ request-> getFullActionName () == 'cms_index_index') {// você está na página inicial}
if ($ request-> getFullActionName () == 'catalog_product_view') {// você está na página do produto}
if ($ request-> getFullActionName () == 'catalog_category_view') {// você está na página da categoria}
e se você deseja obter uma categoria atual e seus dados, pode fazê-lo via
$ category = $ objectManager-> get ('Magento \ Framework \ Registry') -> registro ('categoria_ atual');
$ category-> getData ('schbang_category_name');
em que schbang_category_name é meu atributo de categoria personalizado
Espero que isso ajude alguém.
você pode adicionar condicionais, como
if ($ this-> getProductPage ()) { // esta é uma página de produto, faça algumas coisas } elseif ($ this-> getCategoryPage ()) { // esta é uma página de categoria, faça algumas coisas }
getCategoryPage
em qualquer lugar Magento 2, pelo menos não em 2.1.10