Magento开箱即用,是否可以查看从根类别开始的分层导航页面?
即,使用示例数据,如果我导航到
http://magento1point7pointzeropoint1.dev/catalog/category/view/id/8
我得到了商店中所有手机的列表,分层导航为我提供了按类别排序的选项。
如果我导航到手机的父类别页面(电子产品)
http://magento1point7pointzeropoint1.dev/catalog/category/view/id/13
分层导航为我提供了按
过滤的选项Cell Phone
Camera
Computer
这些都是电子产品的子类别。
所以,我想知道的是,商店/系统中是否有一个页面,我可以浏览到ROOT类别,分层导航将使我能够按顶级类别(家具,电子产品,服装)或能力排序* 所有这些父类别的子类别(太多无法列出)。
当我尝试浏览根类别
时http://magento1point7pointzeropoint1.dev/catalog/category/view/id/3
我得到一个404页面。所以我的第一个假设是功能不存在,但你的第一直觉常常让你误入歧途,所以我转向StackOverflow /“社区”以获得明确的答案。
(边界编程相关,我知道,但我要问的是研究编程问题的一部分)
答案 0 :(得分:4)
这是可能的,并且以真正的magento方式,而不是那么直接。阻止控制器显示根类别的主要因素是catalog/category
帮助程序。
类别控制器的_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;
}
如您所见,它会检查以确保该类别不是根类别。我过去处理这个问题的方法是使用以下模块:
你可能会遇到其他问题,但至少你应该有一个起点。
为了更直接地回答你的问题,根据我的经验,如果没有将其放入其中,它就不存在。
答案 1 :(得分:3)
我建议的是一种不同的方法,但应该在没有对类别路由/处理/等进行大量改动的情况下工作。
将类别添加到标有“产品”,“目录”或类似通用名称的根目录中。配置它以支持分层导航并将所有其他类别放在其中。当然,这意味着顶部导航搞砸了;等等到任务#2。
既然按照我们希望的方式设置了类别,请重写Mage_Catalog_Block_Navigation
并更改renderCategoriesMenuHtml
方法最顶端的逻辑,以便开始使用第一个{{1}的子项进行rending。 1}}在循环中填充用于构建标记的$child
数组。
这将变得更加清晰,而不是弄清楚根类别如何与层次结构相关联,并且它实现了拥有主分层导航的目标。唯一潜在的缺点(取决于你如何看待它)是你的URI和痕迹路径中有'/ products /'(或目录)。