すでにアクティブな Magento Web サイトに Web サイト/ストアフロントを追加しようとしています。
開発サイトでこれを設定しているときに、マルチストアの .htaccess コードをドロップすると、すべての製品がカテゴリ ビューから消えることに気付きました。ただし、my-domain.com/category/product などの直接リンクを介して製品にアクセスすることはできます。
私が使用している .htaccess コードは次のとおりです。
## Storefronts
# Main Store
SetEnvIf Host www\.my-domain\.com MAGE_RUN_CODE=main-store_code
SetEnvIf Host www\.my-domain\.com MAGE_RUN_TYPE=website
SetEnvIf Host ^my-domain\.com MAGE_RUN_CODE=main-store_code
SetEnvIf Host ^my-domain\.com MAGE_RUN_TYPE=website
# Second Store
SetEnvIf Host second-store\.my-domain\.com MAGE_RUN_CODE=second_store_code
SetEnvIf Host second-store\.my-domain\.com MAGE_RUN_TYPE=website
ルート Magento インストールをベース ディレクトリとして使用するようにサブドメインを設定しました。マルチストアが機能し、テーマ、設定、製品などを変更できます.
ここに表示されているものすべてを細心の注意を払って少なくとも5回確認しました。受け入れられた回答には、カテゴリのトラブルシューティングチェックリストがあります
製品がフロント エンドで利用できるが、カテゴリ ビューでは利用できない原因について、何か考えがある人はいますか? Magento Enterprise 1.12.0.2 を実行しています
編集:これまでに試しました:
- 製品は、カタログの適切なカテゴリ/ストアに割り当てられます。
- 製品は有効です。(一括有効化/無効化を試みました)
- 商品には数量があります。
- 製品は「在庫あり」に設定されています
- オフに設定された在庫管理 OS
- 在庫切れの表示はありに設定されています。
- マルチ Web サイトが使用されており、製品がターゲット Web サイトに割り当てられています。
- キャッシュを更新し、削除してから無効にしました
- 管理者とコマンドラインからすべて再インデックスしました。
- 適切なストア ID を確認するために、さまざまな var_dumps を実行しました
- USER_NOT_LOGGED_IN のデータベース グループを確認しました。本来あるべき0です。
- 製品は、自分がどのストアにいるかを認識しており、ユーザーが直接その製品に移動した場合に正常に機能します。
- データベース修復ツールを実行しました
- データベースを新しいデータベースツールと比較して実行しました。(これにより、インデックス作成に関する 2 つの小さな問題が見つかりました) 再度インデックスを作成しましたが、うまくいきませんでした。
- キャッシュをオフにして、必須ではないすべてのモジュールを無効にしました。
「選択に一致する製品がありません」というメッセージが表示されるだけです。カテゴリ ビューのエラー。
編集 #2 これらは、OSdave が指摘した list.php トラブルシューティングの SQL ステートメントです。
また、デフォルト ストアがフロント エンドで使用されていないことに注意することも有益だと思います。それは単に製品を輸入するために使用するベースです。表示されているストアフロントは、上記の .htaccess ファイルに表示されています。
#Base store (1)(this works):
2013-10-03T14:12:48+00:00 DEBUG (7): SELECT `e`.*, `cat_index`.`position` AS `cat_index_position`, `price_index`.`price`, `price_index`.`tax_class_id`, `price_index`.`final_price`, IF(price_index.tier_price IS NOT NULL, LEAST(price_index.min_price, price_index.tier_price), price_index.min_price) AS `minimal_price`, `price_index`.`min_price`, `price_index`.`max_price`, `price_index`.`tier_price` FROM `catalog_product_entity` AS `e`
INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 AND cat_index.visibility IN(2, 4) AND cat_index.category_id='3'
INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '1' AND price_index.customer_group_id = 0 ORDER BY `cat_index`.`position` ASC LIMIT 10
#This is from the store2 store (MAGE_RUN_CODE=main-store_code):
2013-10-03T13:35:38+00:00 DEBUG (7): SELECT `e`.*, `cat_index`.`position` AS `cat_index_position`, `price_index`.`price`, `price_index`.`tax_class_id`, `price_index`.`final_price`, IF(price_index.tier_price IS NOT NULL, LEAST(price_index.min_price, price_index.tier_price), price_index.min_price) AS `minimal_price`, `price_index`.`min_price`, `price_index`.`max_price`, `price_index`.`tier_price` FROM `catalog_product_entity` AS `e`
INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=2 AND cat_index.visibility IN(2, 4) AND cat_index.category_id='3'
INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '2' AND price_index.customer_group_id = 0 AND price_index.stock_id = 15 ORDER BY `cat_index`.`position` ASC LIMIT 10
#This is from the store3 store (RUN_CODE=second_store_code):
2013-10-03T14:48:05+00:00 DEBUG (7): SELECT `e`.*, `cat_index`.`position` AS `cat_index_position`, `price_index`.`price`, `price_index`.`tax_class_id`, `price_index`.`final_price`, IF(price_index.tier_price IS NOT NULL, LEAST(price_index.min_price, price_index.tier_price), price_index.min_price) AS `minimal_price`, `price_index`.`min_price`, `price_index`.`max_price`, `price_index`.`tier_price` FROM `catalog_product_entity` AS `e`
INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=3 AND cat_index.visibility IN(2, 4) AND cat_index.category_id='37'
INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '2' AND price_index.customer_group_id = 0 AND price_index.stock_id = 1 ORDER BY `cat_index`.`position` ASC LIMIT 9
違いを調べています。一見したところ、Web サイト ID がオフになっている可能性があることに気付きました。
EDIT #3 3 つのクエリすべてを比較し、少し試してみました。私が見つけたのは、catalog_product_index_price テーブルに私の製品の 90% と、ストア ID=1 以外のすべての製品が欠落しているように見えるということです。
SQL クエリを使用して、店舗 ID が 1 の商品を取得できます。他のすべてが失敗します。渡される値を手動で確認しました。製品は単にcatalog_product_index_priceテーブルに存在しません。
今何?データベース修復ツールを試しました...
編集 #4 Stock_ID は、配送地域を管理するために使用している innoexts プラグインである Multi-Warehouse から取得されます。