【问题标题】:Magento category tree is not shoing in category edit and product editMagento 类别树未显示在类别编辑和产品编辑中
【发布时间】:2015-08-19 04:14:54
【问题描述】:

我正在使用 magento 1.5 并且在类别编辑和产品编辑页面中遇到奇怪的问题 管理员,一个类别的子类别树没有显示我已经编写了自定义代码来查找该特定类别的子类别并且它没有显示使用该代码的任何子类别,但是当我在数据库中签入该特定类别的所有子类别时可用。

简单来说,一个类别的子类别树没有显示在管理员的类别编辑和产品编辑页面中。

谢谢, 吉特

【问题讨论】:

标签: magento


【解决方案1】:

检查catalog_category_entity 中的children_count 列。如果你有我在 1.6 上遇到的问题,你可能在那里有负值。

如果是这样,试试这个:

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

当我几个月前使用它时,它没有任何不良影响。不过,理想情况下,您希望计算 children_count 并正确设置它。

编辑:我也遇到了同样的问题,关卡不正确。如果您导入了所有产品,则级别可能会收到不正确的值。如果您有沙盒设置,请尝试以下操作:

    $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());
    }

【讨论】:

  • @Jitendra - 你找到解决方案了吗?即使是其他内容,您也可以将其添加为答案并接受它。它可以帮助访问此页面的其他人获得解决方案。
  • 刚刚使用 CE 1.9.4.3 遇到了这个问题,并且也能够像这样修复它。谢谢。
【解决方案2】:

我可以向您保证,Zachary Schuessler 解决方案在 1.7.0.2 中完美运行。 我只是发布,以便它可以帮助将来的问题。

1- 在我使用“目录/管理类别”从根类别下删除了很多产品并取消选择“类别产品”选项卡中的产品后,我遇到了这个问题。

2- 模式类别是硬件,里面有几个子类别,展开的“+”号刚刚消失,所以后端的所有子类别,前端都很好。

3- 正如 Zachary Schuessler 所说并查看数据库的 硬件 类别 ID,“catalog_category_entity”中的“children_count”列我的值为“-20”。

4- 将值编辑为“20”,后端一切正常。

注意:当我将一个子类别从一个类别移到另一个不同类别中时,这也发生在我身上一次。

干杯!

【讨论】:

  • 谢谢!你救了我。在我的情况下,孩子也被认为是负数。
  • 刚刚使用 CE 1.9.4.3 遇到了这个问题,并且也能够像这样修复它。谢谢。
【解决方案3】:

这是一个 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;

【讨论】:

    【解决方案4】:

    更新这两个查询

    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,"/%"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多