Magento2-Check-in-Vorlage, wenn es sich bei der Seite um eine Homepage handelt
-
29-09-2020 - |
Frage
Wie würde ich direkt in einer .phtml-Vorlage prüfen, ob es sich bei der angeforderten Seite um eine Homepage handelt?
Ich möchte einem bestimmten Container eine Klasse bedingt hinzufügen
Lösung
Wenn Sie prüfen, welche Seite die Homepage von Ihrer Vorlage ist, nähern Sie sich dem Magento-Templating und das Layout falsch.
Mein Ansatz besteht im Allgemeinen darin, einen block von type core / template zu erstellen und das über
Weitere Informationen finden Sie unter dieser Antwort:
https://magento.steckexchange.com/a/30562/336
Eine tiefere Erklärung dieses missverstandenen Konzepts finden Sie hier in meinem Blog:
https://blog.philwinkle.com/the- am meisten missverstanden-Konzept-in-magento /
Für einen noch tieferen Tauchgang in Magento-Layout Lesen Sie das Buch von Alan Storm auf dem Thema:
http://store.pulsestorm.net/products/no-frills -Magento-Layout
Andere Tipps
Sie können eine Instanz von \Magento\Framework\App equest\Http in Ihrem Klassenkonstruktor verwenden.Wenn Sie sich in einem Controller befinden, müssen Sie dies nicht tun.
So können Sie bereits darauf zugreifen $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Dann können Sie überprüfen, ob es sich um eine Homepage, eine Kategorieseite oder eine Produktseite wie folgt handelt:
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
}
Ansonsten direkt über den Objektmanager in der HTML-Datei verwenden
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');