Magento не показывает все категории в админке

У нас есть магазин magento с различными категориями внутри (подкатегория). Наша проблема в том, что когда мы входим в администратор, чтобы управлять категориями в дереве категорий слева, некоторые из наших категорий, у которых есть подкатегории, выглядят правильно со значком плюса (+) слева, но когда мы пытаемся расширить категорию, magento hasn не отображать любой элемент.

Точка вызова Ajax на этот URL:

index.php / администратор /catalog_category/categoriesJson/ ключ /09b218741dce69171825fdbf4954855d/?isAjax= истина

и он возвращает пустой массив без каких-либо ошибок. Веб-интерфейс отображает все категории правильно.

Magento версия 1.4.2.1

Любая идея?

5 ответов

Решение

Прочитав ответ Джозефа, я попытался найти ошибки в catalog_category_entity и обнаружил, что все категории в моем дереве имеют уровень 1 или 2, за исключением категорий, которые не отображаются с уровнем 7. Странно то, что уровень 7 В любом случае, правильный уровень для этой категории. Я думаю, что проблема в том, что Magento нашел категорию с уровнем 2, и он указывает детям уровень 7, и он не распознает эти категории как детей для категории отца.

Я изменил уровень детей до 2, и все, кажется, работает.

Почему все категории в моем дереве имеют уровень 1? я не знаю...

Ты хочешь пойти в стол 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,"/%"));

Вы создавали категории программно (в отличие от использования интерфейса администратора)? Как часто бывает в Magento, когда какое-либо значение отсутствует или неверно в базе данных, записи могут вообще не отображаться. Если это так, пожалуйста, посмотрите на "хорошую" запись категории в базе данных и убедитесь, что отсутствующие категории соответствуют правильным соглашениям.

Надеюсь, это поможет!

Спасибо джо

В моем случае я импортировал все категории и назначил "уровень" в качестве его позиции в дереве. Может быть, это не то, для чего это нужно, потому что установка всех категорий на уровень 2 работала прекрасно и не повредила мое дерево.

Код, который я использовал для установки всех уровней на 2 после неправильной установки:

    foreach ($ category как $category) {
        $category = $category->load($category->getId());

        $level = $category->getLevel();

        if($level > 2) {
            $ Category->setLevel(2);
            $ Category-> Save();
        }

    }

В упомянутых случаях этот запрос мог бы помочь:

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

Это не помогло мне с моими категориями.

Другие вопросы по тегам