我们有一个magento商店,其中包含一个在另一个(子类别)中的各种类别。我们的问题是,当我们进入管理员来管理左侧类别树中的类别时,我们的一些具有子类别的类别正确地看起来与左侧的加号(+),但是当我们尝试扩展类别magento时不显示任何项目。
ajax呼叫指向此网址:
的index.php /管理/ catalog_category / categoriesJson /键/ 09b218741dce69171825fdbf4954855d /?isAjax =真
并返回一个空数组而不会抛出任何错误。前端正确显示所有类别。
Magento版本1.4.2.1
有什么想法吗?
答案 0 :(得分:2)
在阅读约瑟夫答案后,我试图在catalog_category_entity中搜索错误,并确定我树中的所有类别都有1级或2级,除了没有出现级别7的类别。奇怪的是7级是这些类别的正确级别无论如何我认为问题在于Magento发现了一个级别为2的类别,并且直接孩子有7级并且它不会将这些类别识别为父类别的孩子。
我把孩子的等级改为2,一切似乎都有效。
为什么我树中的所有类别都是1级?我不知道......
答案 1 :(得分:2)
你想进入表catalog_category_entity
运行以下SQL查询:
UPDATE catalog_category_entity SET children_count =
(SELECT COUNT(*) FROM
(SELECT * FROM catalog_category_entity) AS table2
WHERE path LIKE
CONCAT(catalog_category_entity.path,"/%"));
答案 2 :(得分:1)
您是否以编程方式创建了类别(而不是使用管理界面)?与Magento中的情况一样,当数据库中的某些值丢失或不正确时,条目可能根本不会显示。如果是这种情况,请查看数据库中的“好”类别记录,并确保缺少的类别遵循正确的约定。
希望有所帮助!
谢谢, 乔
答案 3 :(得分:1)
在我的例子中,我导入了所有类别,并将“level”指定为树中的位置。也许这不是它的用途,因为将所有类别设置为2级可以很好地工作并保持我的树完好无损。
代码我在设置错误后将所有级别设置为2:
foreach ($categories as $category) { $category = $category->load($category->getId()); $level = $category->getLevel(); if($level > 2) { $category->setLevel(2); $category->save(); } }
答案 4 :(得分:0)
对于上述情况,此查询可能有所帮助:
select c.entity_id cid, p.entity_id pid
from
catalog_category_entity c
inner join catalog_category_entity p on c.parent_id = p.entity_id
where c.level != p.level+1
但是,它对我的类别没有帮助。