新しいmagento2をインストールし、上位のカテゴリが機能していますが、サブカテゴリの場合、これらのサブカテゴリに製品を割り当てても、フロントエンドに製品が表示されません。
「セレクションに合った商品が見つからない」といつも言われています。
プログラムでこれを診断できるように、製品の表示を担当するMagento 2のコードはどこにありますか?
製品を表示するには、次のオプションの製品があるかどうかを確認します:
製品をサブカテゴリにチェックする場合は、カタログ->カテゴリの管理->カテゴリの選択に移動し、[表示設定]タブを開いてオプションを変更します "Is Anchor"to "Yes"。カテゴリを保存します。
Reindexingを試すことができます。これらがすべて設定されている場合は機能します
1.一般->ステータス=有効
2.general-> Visibility = Catalog、Search
3.在庫->数量> 0
4.在庫->在庫状況=在庫あり
5.ウェブサイト=あなたのサイトをチェックする
6.Catgories =カテゴリを確認します。
コマンドラインで次のコマンドを実行してください。
php bin/magento indexer:status
インデックスの1つが「処理中」の場合は、MySQLデータベースに移動し、indexer_stateテーブルに移動します。値の1つが「動作中」で、残りが「有効」であることがわかります。
作業を無効に設定し、再度インデックスを作成します。これを行う最良の方法は、次のクエリを実行することです。
update magento.indexer_state set status='invalid' where status ='working'
幸運を!
これは、インデックスの再作成の問題が原因です。
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
最後に、フロントエンドページの以前の340製品ではなく、カテゴリページに2000の製品全体が表示されました。また、インデックス管理の「製品カテゴリ」タブは、バージョンがアップグレードされた日付から現在のインデックス作成日時に更新されます。
素晴らしい経験です!
これが多くの開発者や所有者に役立つことを願っています。
同様の問題が発生しました。製品は親カテゴリに表示されましたが、最初に割り当てられたサブカテゴリには表示されませんでした。サブカテゴリおよび/または(両方が必要かどうかはわかりませんが)親カテゴリ編集ページの[保存]ボタンを押すことで解決しました。