Gibt es eine Möglichkeit, dies zu überprüfen, wenn sich ein Benutzer auf einer Kategorieseite oder einer einzelnen Produktseite in Magento 2 befindet?
Jede Hilfe wäre sehr dankbar!
Gibt es eine Möglichkeit, dies zu überprüfen, wenn sich ein Benutzer auf einer Kategorieseite oder einer einzelnen Produktseite in Magento 2 befindet?
Jede Hilfe wäre sehr dankbar!
Antworten:
Sie können den folgenden Code ausprobieren, der Ihnen möglicherweise hilft.
Fügen Sie eine Instanz von \Magento\Framework\App\Request\Http
in Ihren Klassenkonstruktor ein.
Wenn Sie sich in einem Controller befinden, müssen Sie dies nicht tun. Sie können bereits so darauf zugreifen$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Dann können Sie überprüfen, ob Kategorie oder Produkt wie folgt ist :
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
}
Sie können die Instanz von \ Magento \ Framework \ App \ Request \ Http in Ihrem Klassenkonstruktor verwenden. Wenn Sie sich in einem Controller befinden, müssen Sie dies nicht tun.
Sie können bereits so 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 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
}
Andernfalls direkt in der HTML-Datei mit dem Objektmanager verwenden
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
Ich denke, wir können direkt verwenden
$this->getRequest()->getFullActionName()
in der .phtml-Datei, um die aktuelle Seitenaktion abzurufen.
Wenn Sie eine Vorlagendatei verwenden, z. B. .phtml, können Sie die Seite direkt mit dem folgenden Code aufrufen:
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance ();
$ request = $ objectManager-> get ('\ Magento \ Framework \ App \ Request \ Http');
if ($ request-> getFullActionName () == 'cms_index_index') {// du bist auf der Homepage}
if ($ request-> getFullActionName () == 'catalog_product_view') {// Sie befinden sich auf der Produktseite}
if ($ request-> getFullActionName () == 'catalog_category_view') {// Sie befinden sich auf der Kategorieseite}
und wenn Sie eine aktuelle Kategorie und ihre Daten erhalten möchten, können Sie dies über tun
$ category = $ objectManager-> get ('Magento \ Framework \ Registry') -> Registrierung ('current_category');
$ category-> getData ('schbang_category_name');
Dabei ist schbang_category_name mein benutzerdefiniertes Kategorieattribut
Ich hoffe das könnte jemandem helfen.
Sie können Bedingungen hinzufügen, z
if ($ this-> getProductPage ()) { // Dies ist eine Produktseite, mach ein paar Sachen }} elseif ($ this-> getCategoryPage ()) { // Dies ist eine Kategorieseite, mach ein paar Sachen }}
getCategoryPage
in Magento 2, zumindest nicht in 2.1.10