Magento 层导航从根类别开始

标签 magento

通过开箱即用的 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/

相关文章:

magento - Magento 中按类别分类的新产品

mysql - 比较sql中的两个值

class - Magento 重复类重写

magento - 在 Magento 1.7 中添加自定义注册属性

php - 更改文件和文件夹权限后出现 403 Forbidden

php - 无法重新声明类 Magento

php - Magento 在哪里设置报价项目的价格?

php - 在 Magento 中找不到 Varien_Data_Form_Element_Int

c# - Magento 的 api v2 中的多个 complexFilter

php - 登录和结帐页面需要 SSL 的 Magento index.php [HTTP 404]