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

Foi útil?

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');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top