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