4

すでにアクティブな 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 を実行しています

編集:これまでに試しました:

  1. 製品は、カタログの適切なカテゴリ/ストアに割り当てられます。
  2. 製品は有効です。(一括有効化/無効化を試みました)
  3. 商品には数量があります。
  4. 製品は「在庫あり」に設定されています
  5. オフに設定された在庫管理 OS
  6. 在庫切れの表示はありに設定されています。
  7. マルチ Web サイトが使用されており、製品がターゲット Web サイトに割り当てられています。
  8. キャッシュを更新し、削除してから無効にしました
  9. 管理者とコマンドラインからすべて再インデックスしました。
  10. 適切なストア ID を確認するために、さまざまな var_dumps を実行しました
  11. USER_NOT_LOGGED_IN のデータベース グループを確認しました。本来あるべき0です。
  12. 製品は、自分がどのストアにいるかを認識しており、ユーザーが直接その製品に移動した場合に正常に機能します。
  13. データベース修復ツールを実行しました
  14. データベースを新しいデータベースツールと比較して実行しました。(これにより、インデックス作成に関する 2 つの小さな問題が見つかりました) 再度インデックスを作成しましたが、うまくいきませんでした。
  15. キャッシュをオフにして、必須ではないすべてのモジュールを無効にしました。

「選択に一致する製品がありません」というメッセージが表示されるだけです。カテゴリ ビューのエラー。

編集 #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 から取得されます。

4

5 に答える 5

0
  1. キャッシュを一時的にオフにします (オンになっている場合)。

  2. テーマ ベースのエラーの可能性を除外します。ベースのデフォルト テーマに戻してみてください。

  3. Web サイトのルート カテゴリを確認します。[システム] > [ストアの管理] に移動し、ストアをクリックして、正しいルート カテゴリを指しているかどうかを確認します。

  4. コマンド ラインから完全な再インデックスを実行する - 最初に移動し[MAGENTO_ROOT]/shell/て実行するphp indexer.php --reindexall

  5. すべての拡張機能を 1 つずつ無効にしてみましたか? これを行う最も確実な方法は、xmlファイルを削除することだと思いますapp/etc/modules/

于 2013-10-03T02:13:00.017 に答える
0

製品がフロント エンドで利用できるが、カテゴリ ビューでは利用できない原因について、何か考えがある人はいますか?

あなたの質問はここで少し混乱しています。「カテゴリー ビュー」とは、カテゴリー編集フォーム (管理パネル) または製品リスト ページ (フロントエンド) を意味しますか?

商品一覧ページの場合、URL書き換えを再構築してみてください。

于 2013-10-07T05:43:39.667 に答える
0

Dave you rock さん、SQL クエリ ログのおかげでかなりの時間を節約できました。だから私の問題は、MySQL DBを移動したときに、「ログインしていない」customer_groupがcustomer_group_id 0から6に切り替わったことでした.0に戻し、インデックスを再作成し、キャッシュを再作成すると、機能しました。頭がドキドキする5時間の悪夢がついに終わった…

このmysql移行の問題が発生した他の人は、0 IDが失われる場所が他にもいくつかあるため、必ず各テーブルを確認してください。

于 2015-05-23T11:37:59.867 に答える