将 Magento 类别复制到父级

发布于 2024-09-18 11:34:56 字数 1036 浏览 4 评论 0原文

设想: 一个新的空白 Magento,带有类别产品和客户导入,需要进行一些修复。

类别结构:

Root
 L..Category_parent1 (0 products)
    L..Category_child1 (22)
    L..Category_child2 (34)
 L..Category_parent2 (0)
    L..Category_child1 (22)
    L..Category_child2 (34)
 L..Category_parent3 (0)
    L..Category_child1 (22)
    L..Category_child2 (0)
       L..Category_child2_child1 (22)
       L..Category_child2_child2 (34)
    L..Category_child3 (10)

我想使用 SQL 查询或 php 脚本将所有产品从子类别复制到其相对父类别。 (我不知道是否可以通过 Magento 管理员来做到这一点)。

期望的结果:

Root
 L..Category_parent1 (22 + 34 products)
    L..Category_child1 (22)
    L..Category_child2 (34)
 L..Category_parent2 (22 + 34)
    L..Category_child1 (22)
    L..Category_child2 (34)
 L..Category_parent3 (22 + 22 + 34 + 10)
    L..Category_child1 (22)
    L..Category_child2 (22 + 34)
       L..Category_child2_child1 (22)
       L..Category_child2_child2 (34)
    L..Category_child3 (10)

更新! 有没有办法只在展示产品上做到这一点? 以这种方式查看产品与自己的类别之间的关系(只需在列表中的视图布局中执行此操作...)?

Scenario:
A new blank Magento with a category product and customer import with some fixes to do.

Category structure:

Root
 L..Category_parent1 (0 products)
    L..Category_child1 (22)
    L..Category_child2 (34)
 L..Category_parent2 (0)
    L..Category_child1 (22)
    L..Category_child2 (34)
 L..Category_parent3 (0)
    L..Category_child1 (22)
    L..Category_child2 (0)
       L..Category_child2_child1 (22)
       L..Category_child2_child2 (34)
    L..Category_child3 (10)

I want to copy all products from a child category to its relative parent using a SQL query or a php script. (I don't know if it's possible to do this through the Magento admin).

Desired Result:

Root
 L..Category_parent1 (22 + 34 products)
    L..Category_child1 (22)
    L..Category_child2 (34)
 L..Category_parent2 (22 + 34)
    L..Category_child1 (22)
    L..Category_child2 (34)
 L..Category_parent3 (22 + 22 + 34 + 10)
    L..Category_child1 (22)
    L..Category_child2 (22 + 34)
       L..Category_child2_child1 (22)
       L..Category_child2_child2 (34)
    L..Category_child3 (10)

UPDATE!
Is there a way to do this only on show products?
See products in this way manteining relashionship with their own categories (simply do that in view layout in list...)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦魇绽荼蘼 2024-09-25 11:34:56

作为部分解决方案:

insert into catalog_category_product_index (
    select cat.parent_id, prod.product_id, 1 
      from catalog_category_product_index prod, catalog_category_entity cat
      where prod.category_id = cat.entity_id and cat.level >= 1
);

这应该选择所有内容并将其提升一个级别(直到我们到达根)。单独的查询将有助于位置列(当前硬编码为 1)。但最大的问题是,您想要的结果实际上将项目提升到不止一级,而此查询只执行一级。为了真正正确地概括,也许可以将此查询放入某些代码中,然后从最低深度​​开始重复它并向上移动。

希望有帮助!

谢谢,

As a partial solution:

insert into catalog_category_product_index (
    select cat.parent_id, prod.product_id, 1 
      from catalog_category_product_index prod, catalog_category_entity cat
      where prod.category_id = cat.entity_id and cat.level >= 1
);

This should select everything and bump it up a level (until we get to the root). A separate query would help the position column (currently hardcoded to 1). The big problem is, though, that your desired outcome actually bumps items more than one level, whereas this query only does one level. To really generalize properly, maybe drop this query into some code and repeat it starting at the lowest depth and move upwards.

Hope that helps!

Thanks,
Joe

蓝海似她心 2024-09-25 11:34:56

似乎对所有类别设置 is_anchor 解决了我的问题,但 joseph 提供的答案回答了问题

It seems that setting up is_anchor to all categories solve my problem, but the answer provided by joseph answer the question

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文