Esiste un modo per verificare se un utente su una pagina di categoria o una pagina di singolo prodotto in Magento 2?
Qualsiasi aiuto sarebbe molto apprezzato!
Esiste un modo per verificare se un utente su una pagina di categoria o una pagina di singolo prodotto in Magento 2?
Qualsiasi aiuto sarebbe molto apprezzato!
Risposte:
Puoi provare sotto il codice che potrebbe aiutarti.
Iniettare un'istanza di \Magento\Framework\App\Request\Http
nel costruttore della classe.
Se sei in un controller non è necessario farlo. Puoi già accedervi in questo modo$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Quindi puoi verificare se la categoria o il prodotto è simile a questo:
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
}
Immagino che possiamo usare direttamente
$this->getRequest()->getFullActionName()
nel file .phtml per ottenere l'azione della pagina corrente.
È possibile utilizzare l'istanza di \ Magento \ Framework \ App \ Request \ Http nel costruttore della classe. Se sei in un controller non è necessario farlo.
Puoi già accedervi in questo modo $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Quindi è possibile verificare se è homepage o categorypage o pagina del prodotto in questo modo:
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
}
In caso contrario, utilizzare direttamente nel file phtml utilizzando la gestione degli oggetti
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
Se si utilizza un file modello, ad esempio .phtml, è possibile chiamare direttamente la pagina utilizzando il codice seguente:
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance ();
$ request = $ objectManager-> get ('\ Magento \ Framework \ App \ Request \ Http');
if ($ request-> getFullActionName () == 'cms_index_index') {// sei sulla homepage}
if ($ request-> getFullActionName () == 'catalog_product_view') {// sei nella pagina del prodotto}
if ($ request-> getFullActionName () == 'catalog_category_view') {// ti trovi nella pagina della categoria}
e se ottieni una categoria corrente e i suoi dati puoi farlo tramite
$ category = $ objectManager-> get ('Magento \ Framework \ Registry') -> register ('current_category');
$ Categoria-> getData ( 'schbang_category_name');
dove schbang_category_name è il mio attributo di categoria personalizzato
Spero che questo possa aiutare qualcuno.
puoi aggiungere condizionale, ad esempio
if ($ this-> getProductPage ()) { // questa è una pagina del prodotto, fai qualcosa } elseif ($ this-> getCategoryPage ()) { // questa è una pagina di categoria, fai qualcosa }
getCategoryPage
Magento 2 non esiste alcuna funzione , almeno non in 2.1.10