1

基本上,我试图在我们主页的(核心/模板)块中显示我们 Magento 商店中顶级类别的 URL、缩略图和名称的列表。我们使用的是 Magento Enterprise 1.12.0.2,但我认为引用的代码也适用于社区版。

要加载类别,我使用以下内容:

/**
 * Parent Category of store
 * @var Mage_Catalog_Model_Category
 */
$_parent_category = Mage::getModel('catalog/category')->load(2);

/**
 * Resource Model that will allow us to load the Categories.
 * @var Mage_Catalog_Model_Resource_Category
 */
$_resource = Mage::getResourceModel('catalog/category');

/**
 * Collection of Child Categories
 * @var Mage_Catalog_Model_Resource_Category_Collection
 */
 $_categories = $_resource->getChildrenCategories($_parent_category);

一切正常,直到我切换到平面表(将系统 -> 配置 -> 目录 -> 前端 -> 我们平面目录类别)更改为“是”

一旦我这样做,我会收到以下错误:

Fatal error: Call to undefined method Mage_Catalog_Model_Resource_Category_Flat_Collection::joinUrlRewrite() in /app/code/core/Mage/Catalog/Model/Resource/Category.php

我重新索引,刷新所有缓存等。

这是核心代码库中的错误还是我的执行错误?

提前感谢您的任何指导。

4

1 回答 1

3

发生这种情况是因为类别模型 ( catalog/category) 对不同的设置使用不同的资源模型,Use Flat Catalog Category并且您一直在使用Mage::getResourceModel('catalog/category');。如果启用了平面类别,则资源模型应该是Mage::getResourceModel('catalog/category_flat');.
为了不被这个困扰,我建议使用

$_parent_category = Mage::getModel('catalog/category')->load(2);
$_categories = $_parent_category->getChildrenCategories();

让 Magento 决定使用什么资源模型。

于 2013-09-26T14:08:34.543 回答