マルチストア製品は(ストア1)(ストア2)レビューフォームを表示する(ストア1)のみを有効にする
-
22-10-2019 - |
質問
これがバグなのか、私の構成のあるものなのかはわかりません。
1つのMagentoに1つのデータベースがインストールされており、2つのストアを実行しています。
一部の製品は(ストア1)でのみ有効になり、これらは(ストア1)の下にのみ表示されます。ただし、分析を通じて、/Review/Product/List/ID/NNNページから来る404ページのページを見つけました。 (製品はかつて存在していて、サイトマップに存在していたので、これが私の注意を引く理由と方法になります)。
Product Review Formページからリンクをクリックすると、404が見つかっていないページが予想されるので、私の質問はなぜこの製品の多くがまったく表示されるのですか?製品レビューテンプレートはすべて、製品の表示を既に許可していないのと同じテンプレートから来ているように見えるので、これがルーティングURLがコード自体を示すものを制御するルーティングですか?
値を出力しても $_product = $this->getProduct();
私は製品に関する情報を取得します、そして、情報は、すべてのアカウントが存在しないでください。
解決
ああ、これは奇妙なものです、それは「バグ」またはおそらく、製品がレビューでいつ表示されるべきかについての意見に単なる「違い」があるように見えます。
製品ビュー
したがって、現在、カタログ製品ビューページが使用しています Mage_Catalog_Helper_Product
製品の開始とレンダリングを支援します。いいね、それはいくつかの良いチェックをします。
$product = Mage::getModel('catalog/product')
->setStoreId(Mage::app()->getStore()->getId())
->load($productId);
if (!$this->canShow($product)) {
return false;
}
if (!in_array(Mage::app()->getStore()->getWebsiteId(), $product->getWebsiteIds())) {
return false;
}
Canshow機能が深く調べたときの機能は、の結果を単純に返します $product->isVisibleInCatalog() && $product->isVisibleInSiteVisibility()
製品は正しくロードされています。
今、これはすべてうまく機能しているようです、Magentoは良い仕事です。
レビューリスト
それでは、レビューリストがどのように行うか見てみましょう。
まず、同じヘルパーを使用しません。これは、製品を表示できるかどうかをチェックするなど、多くの重複コードを制限するためにこれを制限するために少し奇妙です。これはここで見ている問題のようです。 (
だから私たちはそれが何をしていないかを知っているので、それが何をしているのかを確認しましょう。
さて、それは次のチェックで許可されている製品を分類します:
if (!$product->getId() || !$product->isVisibleInCatalog() || !$product->isVisibleInSiteVisibility()) {
以前にヘルパーのCanshow機能で見たことがありますが、悲しいことに、それがすべてチェックされているため、ウェブサイトをさらにチェックしません。これが実際にバグなのか、それとも望ましい結果なのかはわかりませんが、それは単に整理するためだけであるはずです。
修理
これを修正するためには、かなりシンプルであるように見えます。幸いなことに、引っ掛けることができる2つのイベントがあります。どちらも解雇されます Mage_Review_ProductController::_initProduct
.
Mage::dispatchEvent('review_controller_product_init', array('product'=>$product));
Mage::dispatchEvent('review_controller_product_init_after', array(
'product' => $product,
'controller_action' => $this
));
したがって、これらのイベントのいずれかで動作し、製品に添付されたWebサイトをチェックするオブザーバーを作成することをお勧めします。 clearInstance
他のヒント
Admin Catalog-> [製品の管理]に移動します。ここで、ストア2で見られる製品を見つけます。両方のウェブサイトで製品を有効にすることを確認してくださいこの画面では、Webサイト列のDiamond Storeディスプレイのみを参照してくださいので、製品はダイヤモンドストアでのみ表示されます。他の店では、この製品を見ることができません
単一製品でマルチサイトが見つかった場合は、削除します。 goto編集製品 - >ウェブサイトタブ - >クリックを削除して、他のストアから無効にします。 (表示する場所のみを保存します)。