如果客人在类别列表页面或产品页面上,我正在尝试在我的 .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/