通过开箱即用的 Magento 安装,是否可以查看从根类别开始的分层导航页面?
也就是说,如果我导航到
,则使用示例数据http://magento1point7pointzeropoint1.dev/catalog/category/view/id/8
我获得了商店中所有手机的列表,并且分层导航不提供按类别排序的选项。
如果我导航到手机的父类别页面(电子)
http://magento1point7pointzeropoint1.dev/catalog/category/view/id/13
分层导航让我可以选择过滤方式
Cell Phone
Camera
Computer
这些都是电子产品的子类别。
所以,我想知道的是,商店/系统中是否有一个页面可以浏览到“根”类别,其中分层导航使我能够按顶级类别(家具、电子产品、服装)或能够按*所有这些父类别的子类别(太多,无法列出)进行排序。
当我尝试浏览到根类别时
http://magento1point7pointzeropoint1.dev/catalog/category/view/id/3
我收到 404 页面。所以我的第一个假设是该功能不存在,但你的第一直觉常常会让你误入歧途,所以我转向 StackOverflow/“社区”寻求明确的答案。
(与边界编程相关,我知道,但我要求作为研究编程问题的一部分)
最佳答案
这是可能的,而且是真正的 magento 时尚,而不是那么直接。阻止 Controller 显示根类别的主要因素是 catalog/category
帮助程序。
类别 Controller 的_initCatagory
调用canShow
方法:
if (!Mage::helper('catalog/category')->canShow($category)) {
return false;
}
法师类别助手:
public function canShow($category)
{
if (is_int($category)) {
$category = Mage::getModel('catalog/category')->load($category);
}
if (!$category->getId()) {
return false;
}
if (!$category->getIsActive()) {
return false;
}
if (!$category->isInRootCategoryList()) {
return false;
}
return true;
}
正如您所看到的,它会检查以确保该类别不是根类别。我过去处理这个问题的方法是使用一个模块:
- 创建一个自定义路由器来处理“所有产品”着陆页并实例化我的自定义类别 Controller
- 创建一个 Controller 来处理加载相应网站的根类别和prov(扩展核心类别 Controller )
- 实现我自己的类别助手,仅重载此方法并放弃检查
您可能会遇到其他问题,但至少您应该有一个起点。
为了更直接地回答你的问题,根据我的经验,如果不硬塞进去,它就不存在。
关于Magento 层导航从根类别开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328949/