Domanda

Come dovrei controllare direttamente in un modello .phtml se la pagina richiesta è la homepage?

Vorrei aggiungere condizionatamente una classe a un determinato contenitore

È stato utile?

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');
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top