我安装了一个新的magento2,顶级类别正在运行,但是对于子类别,即使我将产品分配给这些子类别,也没有产品出现在前端。
它总是说“我们找不到符合选择的产品。”
我在哪里可以找到Magento 2中负责显示产品的代码,以便以编程方式诊断出来?
要显示产品,请检查产品是否包含以下选项:
如果要将产品检查到子类别,请转到目录 - >管理类别 - >选择您的类别,打开选项卡显示设置并将选项“Is Anchor”更改为“是”。保存类别。
您可以尝试重新索引。如果这些都设置完毕,它可以工作
1.General-> Status = Enabled
2.general->可见性=目录,搜索
3.库存 - >数量> 0
4.库存 - >库存可用性=库存
5.Websites =检查你的网站
6.Categories =检查您的类别。
请在命令行中运行以下命令:
php bin/magento indexer:status
如果其中一个索引是“Processing”,那么转到MySQL数据库并转到indexer_state表。您会注意到其中一个值为“Working”,而其余值为“Valid”
将工作设置为无效并再次重新编制索引。执行此操作的最佳方法是运行以下查询:
update magento.indexer_state set status='invalid' where status ='working'
祝好运!
这是由于重新索引问题。
应用程序\代码\模块\目录\等\ 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>
应用程序\代码\模块\目录\型号\索引\目录\产品\行动\ 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个产品。此外,索引管理的“产品类别”选项卡仅从升级版本的日期更新为当前索引日期和时间。
很棒的经历!
希望这将有助于许多开发人员和所有者。
我有类似的问题,产品出现在父类别中,但不在最初分配的子类别中。我通过点击子类别中的“保存”按钮和/或(不确定是否必要)父类别编辑页面来解决它。