我安装了一个新的 magento2,顶级类别正在工作,但对于子类别,即使我将产品分配给这些子类别,前端也没有显示产品。
总是说“我们找不到与选择匹配的产品”。
我在哪里可以找到 Magento 2 中负责显示产品的代码,以便我可以以编程方式对此进行诊断?
我安装了一个新的 magento2,顶级类别正在工作,但对于子类别,即使我将产品分配给这些子类别,前端也没有显示产品。
总是说“我们找不到与选择匹配的产品”。
我在哪里可以找到 Magento 2 中负责显示产品的代码,以便我可以以编程方式对此进行诊断?
要显示产品,请检查产品是否具有以下选项:
如果要检查产品到子类别,请转到目录->管理类别->选择您的类别,打开选项卡显示设置并将选项“是锚”更改为“是”。保存类别。
请在命令行中运行以下命令:
php bin/magento indexer:status
如果其中一个索引是“正在处理”,则转到您的 MySQL 数据库并转到 indexer_state 表。您会注意到其中一个值为“工作”,而其余值为“有效”
将 Working 设置为 Invalid 并再次重新索引。最好的方法是运行以下查询:
update magento.indexer_state set status='invalid' where status ='working'
祝你好运!
你可以尝试重新索引。如果这些东西都设置好了,它会起作用
1.常规->状态=启用
2.general->可见性=目录,搜索
3.库存->数量> 0
4.库存->库存可用性=库存
5.网站 = 检查您的网站
6.Catgories = 检查您的类别。
这是由于重新索引问题。
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 种产品。此外,索引管理上的“产品类别”选项卡只是从版本升级日期更新到当前索引日期和时间。
很棒的体验!
希望这对许多开发商和业主有所帮助。
我遇到了类似的问题,产品出现在父类别中,但没有出现在最初分配的子类别中。我通过点击子类别和/或(不确定是否都需要)父类别编辑页面中的“保存”按钮解决了这个问题。