Có cách nào để tôi có thể kiểm tra xem Nếu người dùng trên trang danh mục hoặc trang sản phẩm riêng lẻ trong Magento 2 không?
Mọi sự trợ giúp sẽ rất được trân trọng!
Có cách nào để tôi có thể kiểm tra xem Nếu người dùng trên trang danh mục hoặc trang sản phẩm riêng lẻ trong Magento 2 không?
Mọi sự trợ giúp sẽ rất được trân trọng!
Câu trả lời:
Bạn có thể thử mã dưới đây nó có thể giúp bạn.
Tiêm một thể hiện \Magento\Framework\App\Request\Http
trong lớp xây dựng của bạn .
Nếu bạn đang ở trong một bộ điều khiển, bạn không cần phải làm điều đó. Bạn đã có thể truy cập nó như thế này$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Sau đó, bạn có thể kiểm tra xem là danh mục hoặc sản phẩm như thế này:
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
}
Bạn có thể sử dụng thể hiện của \ Magento \ Framework \ App \ Request \ http trong trình tạo lớp của bạn. Nếu bạn đang ở trong một bộ điều khiển, bạn không cần phải làm điều đó.
Bạn đã có thể truy cập nó như thế này $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
Sau đó, bạn có thể kiểm tra xem trang chủ hay danh mục hoặc trang sản phẩm như thế này:
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
}
Mặt khác sử dụng trực tiếp trong tệp phtml bằng trình quản lý đối tượng
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
Tôi đoán, chúng ta có thể trực tiếp sử dụng
$this->getRequest()->getFullActionName()
trong tệp .phtml để có hành động trang hiện tại.
Nếu bạn đang sử dụng tệp mẫu, ví dụ: .phtml thì bạn có thể gọi trực tiếp trên trang bằng mã dưới đây:
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance ();
$ request = $ objectManager-> get ('\ Magento \ Framework \ App \ Request \ http');
if ($ request-> getFullActionName () == 'cms_index_index') {// bạn đang ở trang chủ}
if ($ request-> getFullActionName () == 'catalog_product_view') {// bạn đang ở trang sản phẩm}
if ($ request-> getFullActionName () == 'catalog_carget_view') {// bạn đang ở trang chuyên mục}
và nếu bạn có được một danh mục hiện tại và dữ liệu của nó, bạn có thể thực hiện thông qua
$ category = $ objectManager-> get ('Magento \ Framework \ Registry') -> registry ('current_carget');
$ category-> getData ('schbang_carget_name');
trong đó schbang_carget_name là thuộc tính danh mục tùy chỉnh của tôi
Tôi hy vọng điều này có thể giúp một ai đó.
bạn có thể thêm điều kiện, chẳng hạn như
if ($ this-> get SẢNtPage ()) { // đây là một trang sản phẩm, làm một số thứ } otherif ($ this-> getC CategoryPage ()) { // đây là một trang chuyên mục, làm một số thứ }
getCategoryPage
ở bất cứ đâu trong Magento 2, ít nhất là không trong 2.1.10