【问题标题】:Products is not showing up on Magento2 subcategory产品未显示在 Magento2 子类别中
【发布时间】:2016-02-28 21:37:44
【问题描述】:

我安装了一个新的 magento2,顶级类别正在运行,但对于子类别,即使我将产品分配给这些子类别,前端也没有显示产品。

总是说“我们找不到符合选择的产品。”

我在哪里可以找到 Magento 2 中负责显示产品的代码,以便我可以以编程方式对此进行诊断?

【问题讨论】:

  • 欢迎来到 Stackoverflow!这个问题在这里是题外话,因为 SO 是一个专门用于编程问题的站点。请拨打introductory tour。此外,您的问题缺少基本信息,例如使用的版本等。您可能想阅读How do I ask a good question,它提高了获得有用答案的可能性。您可能会发现 ESR 的文章 How To s The Smart Way 很有帮助。
  • 我投票结束这个问题,因为 Stack Overflow 是一个programming-related 问答网站。您的问题与编程无关。也许你应该把它发到magento.stackexchange.com 上?

标签: magento magento2 magento-2.0


【解决方案1】:

要显示产品,请检查产品是否有以下选项:

  1. 常规->状态 = 启用
  2. 常规->可见性 = 目录、搜索
  3. 库存->数量> 0
  4. 库存->库存可用性 = 有库存
  5. 网站 = 检查您的网站
  6. Catgories = 检查您的类别。

如果您想检查产品到子类别,请转到目录->管理类别->选择您的类别,打开选项卡显示设置并将选项“是锚”更改为“是”。保存类别。

【讨论】:

  • 您使用的是哪个 Magento 2 版本?
  • 我使用的是 magento 2.4.1。我尝试了你所有的步骤,但仍然没有显示
【解决方案2】:

你可以尝试重新索引。如果这些东西都设置好了,它会起作用

1.General->状态=启用

2.general->可见性 = 目录、搜索

3.库存->数量> 0

4.Inventory->库存可用性 = 有库存

5.Websites = 检查您的网站

6.Catgories = 检查您的类别。

【讨论】:

  • 非常感谢,重新索引完成了这项工作!很高兴知道,让我的头绕了一会儿。你能解释一下重新索引到底是做什么用的吗?
  • 就我而言,价格必须存在。如果没有,请使用 0.00。
  • 很好,你从@Echo 那里偷了答案。
【解决方案3】:

请在命令行中运行以下命令:

php bin/magento indexer:status

如果其中一个索引是“正在处理”,则转到您的 MySQL 数据库并转到 indexer_state 表。您会注意到其中一个值为“Working”,而其余值为“Valid”

将 Working 设置为 Invalid 并再次重新索引。最好的方法是运行以下查询:

update magento.indexer_state set status='invalid' where status ='working'

祝你好运!

【讨论】:

【解决方案4】:

子类别产品显示问题解决方案,您需要遵循如下:

Magento 2 Admin==> Products==>Category==> Sub Category==> Design ==>Use Parent Category Settings==>在此处检查

【讨论】:

    【解决方案5】:

    这是由于重新索引问题。

    app\code\Modules\Catalog\etc\di.xml

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Magento\Catalog\Model\Indexer\Category\Product\Action\Full" type="Modules\Catalog\Model\Indexer\Category\Product\Action\Full" />
    </config>
    

    app\code\Modules\Catalog\Model\Indexer\Category\Product\Action\Full.php

    <?php 
    namespace Modules\Catalog\Model\Indexer\Category\Product\Action;
    
    /**
     * Class AbstractAction
     * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
    */
    
    class Full extends \Magento\Catalog\Model\Indexer\Category\Product\Action\Full {
    
        public function isRangingNeeded() {
            return false; // It was "True" as default setting.
        }
    }
    

    然后,我们应该运行这个命令。

    php bin/magento cache:clean
    php bin/magento indexer:reindex
    

    最后,我们在类别页面上获得了全部 2000 种产品,而不是之前在前端页面上的 340 种产品。 另外,索引管理中的“产品类别”选项卡只是从版本升级日期更新到当前索引日期和时间。

    很棒的体验!

    希望这对许多开发者和所有者有所帮助。

    【讨论】:

      【解决方案6】:

      我遇到了类似的问题,产品出现在父类别中,但没有出现在最初分配的子类别中。我通过点击子类别和/或(不确定是否都需要)父类别编辑页面中的“保存”按钮解决了这个问题。

      【讨论】:

      • 是的,这也有效,手动重新索引,但对我来说,只需在类别页面中点击保存而不是打开 shell coammand、登录、更改用户、手动运行重新索引和更新缓存。问题在这里更详细地讨论github.com/magento/magento2/issues/2855
      • 这不是正确的做法。新产品有什么用?库存变化?等等......事实上,您可以根据您的期望时间将索引安排为 cron,以便您的数据被正确索引。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      相关资源
      最近更新 更多