Дерево категорий Magento не используется при редактировании категории и редактировании продукта - PullRequest
3 голосов
/ 03 апреля 2012

Я использую magento 1.5 и у меня странная проблема на странице редактирования категории и редактирования продукта в admin, дерево подкатегорий для одной категории не показывает, что я написал собственный код, чтобы найти подкатегорию для этой конкретной категории, и оно не показывает никакой подкатегории, использующей этот код, но когда я проверил в базе данных все подкатегории для этой конкретной категории доступен.

Проще говоря, дерево подкатегорий для одной категории не отображается на странице редактирования категории и редактирования продукта в админке.

Спасибо, Джит

Ответы [ 4 ]

7 голосов
/ 03 апреля 2012

Проверьте ваш children_count столбец в catalog_category_entity.Если у вас возникла проблема, с которой я столкнулся в 1.6, у вас, вероятно, есть отрицательные значения.

Если это так, попробуйте следующее:

UPDATE catalog_category_entity SET children_count = "1" WHERE children_count < 0;

Это не имело каких-либо неблагоприятных последствий, когдаЯ использовал это несколько месяцев назад.Хотя в идеале вы хотели бы рассчитать children_count и установить его правильно.

edit: у меня тоже была та же проблема с неверными уровнями.Если вы импортировали все свои продукты, возможно, уровни получили неправильные значения.Если у вас установлена ​​песочница, попробуйте следующее:

    $categories = Mage::getModel('catalog/category')->getCollection();

    foreach ($categories as $category) {
        $category = $category->load($category->getId());

        $path = $category->getPath();

        $levels = explode('/', $path);

        if (is_array($levels) && count($levels)) {
            $category->setLevel(count($levels));
        }

        $resource = Mage::getSingleton('core/resource');

        /**
         * Category save handler doesn't save level when using
         * the API. Use hard query instead.
         */
        $writeConnection = $resource->getConnection('core_write');
        $writeConnection->query('UPDATE catalog_category_entity SET level = ' . $category->getLevel() . ' WHERE entity_id = ' . $category->getId());
    }
4 голосов
/ 16 мая 2013

Я могу заверить вас, что решение Zachary Schuessler отлично работает в 1.7.0.2. Я просто отправляю сообщения, чтобы они могли помочь в будущем.

1 - У меня возникла эта проблема после того, как я удалил много продуктов из категории «Корень» с помощью «Каталог / Управление категориями» и отменил выбор продуктов на вкладке «Категория продуктов».

2- Категория шаблона была Аппаратное обеспечение , и внутри у меня было несколько подкатегорий, знак расширения "+" просто исчез, и, как и все другие подкатегории в бэкэнде, все отлично в интерфейсе.

3- Сделал, как сказал Захари Шесслер, и посмотрел на базу данных по Оборудование Идентификатор категории, столбец "children_count" в "catalog_category_entity", у меня было значение "-20".

4 - отредактировал значение до «20», и все снова было хорошо в бэкэнде.

Примечание: это также случилось со мной однажды, когда я переместил подкатегорию из одной категории и переместил ее в другую другую категорию.

Ура!

1 голос
/ 22 июля 2015

Обновить эти два запроса

UPDATE catalog_category_entity SET level =
(SELECT LENGTH(path)-LENGTH(REPLACE(path,'/','')) AS tmpl
FROM (SELECT * FROM catalog_category_entity) AS table1
WHERE catalog_category_entity.entity_id = table1.entity_id);

и

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,"/%"));
1 голос
/ 14 сентября 2014

Вот SQL-оператор для обновления всех дочерних подсчетов, если они перестают синхронизироваться при перемещении категорий.Если бы эта проблема возникла у нас, когда сервер потерпел крах на полпути при перемещении категории внутри другой.

UPDATE catalog_category_entity a
    INNER JOIN
    (SELECT  parent_id, count(entity_id) totalChildren
       FROM    catalog_category_entity
      GROUP   BY parent_id) b ON a.entity_id=b.parent_id
SET a.children_count = b.totalChildren;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...