Answers:
您可以尝试下面的代码,它可能会帮助您。
注入一个实例的\Magento\Framework\App\Request\Http
在类的构造函数。
如果您在控制器中,则不需要这样做。您已经可以像这样访问它$request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
然后,您可以检查是这样的类别还是产品:
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->getRequest()->getFullActionName()
在.phtml文件中获取当前页面操作。
您可以在类构造函数中使用\ Magento \ Framework \ App \ Request \ Http的实例。如果您在控制器中,则不需要这样做。
您已经可以像这样访问它 $request = $this->getRequest()
public function __construct(
...
\Magento\Framework\App\Request\Http $request
) {
...
$this->_request = $request;
}
然后,您可以像这样检查主页,类别页或产品页:
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
}
否则直接使用对象管理器在phtml文件中使用
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('\Magento\Framework\App\Request\Http');
如果使用模板文件(即.phtml),则可以直接使用以下代码在页面上调用:
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance();
$ request = $ objectManager-> get('\ Magento \ Framework \ App \ Request \ Http');
if($ request-> getFullActionName()=='cms_index_index'){//您在首页上}
if($ request-> getFullActionName()=='catalog_product_view'){//您在产品页面上}
if($ request-> getFullActionName()=='catalog_category_view'){//您位于类别页面}
如果您要获取当前类别及其数据,可以通过
$ category = $ objectManager-> get('Magento \ Framework \ Registry')-> registry('current_category');
$ category-> getData('schbang_category_name');
其中schbang_category_name是我的自定义类别属性
我希望这可以帮助某人。