Voglio verificare che la pagina corrente sia la home page, la pagina delle categorie, la pagina del prodotto e la pagina cms in magento 2
Voglio verificare che la pagina corrente sia la home page, la pagina delle categorie, la pagina del prodotto e la pagina cms in magento 2
Risposte:
Puoi provare questo: iniettare un'istanza \Magento\Framework\App\Request\Httpnel 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 homepage è così:
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
}
$this->_request->getFullActionName()annuncio usarlo nel file phtml.
Dall'interno del file phtml questo ha funzionato per me:
if ($this->getRequest()->getFullActionName() == 'cms_index_index') {
//you are on the homepage
}
if ($this->getRequest()->getFullActionName() == 'catalog_product_view') {
//you are on the product page
}
if ($this->getRequest()->getFullActionName() == 'catalog_category_view') {
//you are on the category page
}
Prova questo:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('Magento\Framework\App\Action\Context')->getRequest();
if ($request->getFullActionName() == 'cms_index_index') {
// is homepage
}
A causa del modello di progettazione Iniezione delle dipendenze. Si crea un modulo per richiedere una risorsa su richiesta. Il gestore degli oggetti sta andando contro quel paradigma. Tuttavia, funziona benissimo, ma è come usare nuovamente Mage: lento.
Prova sotto il codice:
protected $_logo;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Theme\Block\Html\Header\Logo $logo,
array $data = []
)
{
$this->_logo = $logo;
parent::__construct($context, $data);
}
public function isHomePage()
{
return $this->_logo->isHomePage();
}
Utilizzando Object Manager
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$logo = $objectManager->get('Magento\Theme\Block\Html\Header\Logo');
var_dump($logo->isHomePage());