Apakah ada cara saya dapat memeriksa apakah Jika pengguna pada halaman kategori, atau halaman produk individual di Magento 2?
Bantuan apa pun akan sangat dihargai!
Apakah ada cara saya dapat memeriksa apakah Jika pengguna pada halaman kategori, atau halaman produk individual di Magento 2?
Bantuan apa pun akan sangat dihargai!
Jawaban:
Anda dapat mencoba kode di bawah ini yang mungkin dapat membantu Anda.
Suntikkan instance dari konstruktor kelas\Magento\Framework\App\Request\Http
Anda .
Jika Anda berada di controller Anda tidak perlu melakukannya. Anda sudah dapat mengaksesnya seperti ini$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Kemudian Anda dapat memeriksa apakah kategori atau produk seperti ini:
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
}
Saya kira, kita bisa langsung pakai
$this->getRequest()->getFullActionName()
dalam file .phtml untuk mendapatkan tindakan halaman saat ini.
Anda dapat menggunakan instance dari \ Magento \ Framework \ App \ Request \ Http di konstruktor kelas Anda. Jika Anda berada di controller Anda tidak perlu melakukannya.
Anda sudah dapat mengaksesnya seperti ini $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Kemudian Anda dapat memeriksa apakah beranda atau kategori atau halaman produk seperti ini:
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
}
Kalau tidak langsung digunakan dalam file phtml menggunakan manajer objek
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
Jika Anda menggunakan file template yaitu .phtml maka secara langsung Anda dapat memanggil halaman menggunakan kode di bawah ini:
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance ();
$ request = $ objectManager-> get ('\ Magento \ Framework \ App \ Request \ Http');
if ($ request-> getFullActionName () == 'cms_index_index') {// Anda ada di beranda}
if ($ request-> getFullActionName () == 'catalog_product_view') {// Anda ada di halaman produk}
if ($ request-> getFullActionName () == 'catalog_category_view') {// Anda berada di halaman kategori}
dan jika Anda mendapatkan kategori saat ini dan datanya, Anda dapat melakukannya melalui
$ category = $ objectManager-> get ('Magento \ Framework \ Registry') -> registry ('current_category');
$ category-> getData ('schbang_category_name');
di mana schbang_category_name adalah atribut kategori khusus saya
Saya harap ini bisa membantu seseorang.
Anda dapat menambahkan kondisional, seperti
if ($ this-> getProductPage ()) { // ini adalah halaman produk, lakukan beberapa hal } elseif ($ this-> getCategoryPage ()) { // ini adalah halaman kategori, lakukan beberapa hal }
getCategoryPage
di mana pun di Magento 2, setidaknya tidak di 2.1.10