如何在Magento 2中检查IsHomePage?我们在首页上吗?


9

我想检查当前页面是magento 2中的主页,类别页面,产品页面和cms页面


您想在什么情况下进行检查?控制器?块?
马吕斯

Magento 1版本,我们使用函数Mage :: getBlockSingleton('page / html_header')-> getIsHomePage(); 我想按页面显示数据,例如首页,类别页面,产品页面和cms页面等
MagikVishal 2015年

1
我知道,但是为了回答这个问题,我想知道您想在magento2中的哪个地方使用它。m2中没有全局法师等级。
马吕斯

Answers:


20

您可以尝试以下操作:\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
}

@marius-如何检查phtml文件中的内容?
Manashvi Birla

2
在返回$this->_request->getFullActionName()广告的代码块中编写方法,并在phtml文件中使用它。
Marius

您能详细说明一下吗?怎么做到的?
最多

@Max您还需要什么详细说明?我认为答案很明确?告诉我你想知道什么
马吕斯

抱歉,我重新阅读了它的内容并弄清楚了。谢谢。
2016年

7

从phtml文件内部,这对我有用:

if ($this->getRequest()->getFullActionName() == 'cms_index_index') {
    //you are on the homepage
}
if ($this->getRequest()->getFullActionName() == 'catalog_product_view') {
    //you are on the product page
}
if ($this->getRequest()->getFullActionName() == 'catalog_category_view') {
    //you are on the category page
}

它对我
有用

3

试试这个:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$request = $objectManager->get('Magento\Framework\App\Action\Context')->getRequest();
if ($request->getFullActionName() == 'cms_index_index') {
    // is homepage
}

2
不要使用对象管理器
Marius

这对我有用。为什么不使用对象管理器?
TheBlackBenzKid

直接使用对象管理器是一种不好的做法。Magento官方开发人员 说:“ Magento禁止在代码中直接使用ObjectManager,因为它隐藏了类的真正依赖关系。”
Makwana Ketan

0

由于设计模式的依赖注入。您创建一个模块来按需请求资源。对象管理器违背了这种范例。但是,它的效果很好,但是就像再次使用Mage一样-很慢。


我应该在上面发表评论的呐喊b。
克里斯·安德森

0

试试下面的代码:

protected $_logo;   

public function __construct(
    \Magento\Backend\Block\Template\Context $context,
    \Magento\Theme\Block\Html\Header\Logo $logo,
    array $data = []
)
{       
    $this->_logo = $logo;
    parent::__construct($context, $data);
}

public function isHomePage()
{   
    return $this->_logo->isHomePage();
}

使用对象管理器

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$logo = $objectManager->get('Magento\Theme\Block\Html\Header\Logo');
var_dump($logo->isHomePage());
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.