Magento:如何判断您是在 .phtml 文件中的类别页面还是产品页面

标签 magento themes php

如果客人在类别列表页面或产品页面上,我正在尝试在我的 .phtml 文件中编写一个 if 语句。

例如这段代码:

<?= Mage::app()->getFrontController()->getRequest()->getRouteName(); ?>

只要我在 CMS 页面以外的页面上,就会返回“目录”。

有没有一种方法可以使用类似的方法来了解用户是在查看根类别、子类别还是单个产品页面?

如有任何帮助,我们将不胜感激!

最佳答案

自从我处理前端目录页面以来已经有一段时间了,但请尝试一下。

当前版本的 Magento 在某些页面上注册了某些全局变量(不是 PHP 全局变量,而是 Magento 系统的全局变量)。

调用如下

$category = Mage::registry('current_category');         
$product  = Mage::registry('current_product');
$product  = Mage::registry('product');

如果尚未设置对象(即您在没有类别或产品的页面上),将返回 null,或者返回类别和产品对象。

如果返回一个产品对象,您将进入产品页面。

如果没有返回产品对象但返回了类别对象,则您位于类别页面上。 Category 对象有一个获取父 id 的方法

$category->getParentId()

没有父 ID 的类别应该是顶级类别,有父 ID 的类别应该是子类别。

这应该会为您提供确定当前请求所在位置所需的信息。

更新:近十年后回到这个话题——我可能不会仅依赖注册表的内容来确定我所在的页面。相反,我会使用 the full action name结合寻找上述对象。

关于Magento:如何判断您是在 .phtml 文件中的类别页面还是产品页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3503842/

相关文章:

linux - 可视化调试 GTK3 应用程序 (GtkInspector/gtkparasite)

Javascript插入带有换行符的文本

c# - 在 .NET 中加密字符串并在 PHP 中解密?

asp.net - 我应该如何组织我的 ASP.Net 主题和通用 CSS 文件

php - Goutte,如何发送正文

magento - Magento 服务暂时不可用?

magento - SSL 错误!,您的连接已使用现代密码学加密

php - Magento 分层导航属性未显示

mysql - Magento数据库查询占用资源

javascript - 如何将脚本排队以使用主题的 function.php 归档头?