Magento2 de verificação no modelo, se a página é a página inicial
-
29-09-2020 - |
Pergunta
Como eu poderia verificar diretamente em um .phtml modelo, se a página solicitada está página inicial?
Eu gostaria de adicionar condicionalmente uma classe para um determinado recipiente
Solução
Se você estiver verificando qual página é a página da página do seu modelo, então você está se aproximando de Magento Templating e Layout incorretamente.
Minha abordagem é geralmente criar um bloco de tipo núcleo / modelo e adicionar isso por layout para o cabo de layout correto .
Mais informações podem ser encontradas nesta resposta:
https://magento.stackexchange.com/a/30562/336
Uma explicação mais profunda deste conceito incompreendido pode ser encontrado no meu blog aqui:
https://blog.philwinkle.com/ther- mais mal interpretado-conceito em magento /
Para um mergulho ainda mais profundo no layout Magento, leia o livro de Alan Storm sobre o tópico:
http://store.pulsestorm.net/products/no-fills -Magento-layout
Outras dicas
Você pode usar o exemplo de \Magento\Framework\App\Solicitação\Http no construtor de classe.Se você estiver em um controlador de você não precisa fazê-lo.
Você já pode acessá-lo como este $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Em seguida, você pode verificar se está a página inicial ou categorypage ou productpage como este:
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, usar diretamente na phtml arquivo usando o gerenciador de objetos
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');