Magento2 Sether in Template se la pagina è la homepage
-
29-09-2020 - |
Domanda
Come dovrei controllare direttamente in un modello .phtml se la pagina richiesta è la homepage?
Vorrei aggiungere condizionatamente una classe a un determinato contenitore
Soluzione
Se stai controllando quale pagina è la homepage dal modello, ti stai avvicinando a Magento Templating and Layout in modo errato.
Il mio approccio è generalmente quello di creare un blocco di tipo Core / Template e aggiungilo tramite Layout alla maniglia del layout corretta .
Ulteriori informazioni possono essere trovate in questa risposta:
https://magento.stackexchange.com/a/30562/336
Una spiegazione più profonda di questo concetto frainteso può essere trovato nel mio blog qui:
https://blog.philwinkle.com/the- Most-frainteso-concept-in-magento /
Per un'immersione ancora più profonda nel layout magento Leggi il libro di Alan Storm sull'argomento:
http://store.pulsstorm.net/products/No-FRILLS -Magento-Layout
Altri suggerimenti
È possibile utilizzare istanza di \ magento \ framework \ app \ richiesta \ http nel costruttore di classe.Se sei in un controller non è necessario farlo.
Puoi già accedervi come questo $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
.
Quindi puoi verificare se è la homepage o la categoria o il productpage come questo:
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
}
.
Altrimenti utilizzare direttamente nel file PHTML utilizzando Object Manager
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
.