製品コレクションの問題-価格データが正しくないか、在庫切れのアイテムが表示されない


9

現在のカテゴリに基づいて製品コレクションを取得しています。このコレクションには在庫のある商品と在庫のない商品の両方を含める必要があり、価格設定データを正しく表示する必要もあります。

私のストアは、製品の価格を税込みで格納するように構成されており、ストアフロントで価格を包括的および排他的の両方で表示します。

コレクションを取得するためのコードは次のとおりです。

$category = Mage::registry('current_category'); 
$_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addCategoryFilter($category)
                ->addAttributeToSelect(['sku', 'name', 'price'])
                ->addAttributeToFilter('status', 1)
                ->addAttributeToSort('jump_number', Varien_Data_Collection::SORT_ORDER_ASC); 

上記の問題は、getPriceHtml()メソッドを使用して価格ブロックをロードすると、包括価格と排他価格の両方が包括価格として表示されることです。

調査の結果、addFinalPrice()コレクションにメソッドを追加すると、予想される価格設定(正しい独占価格と正しい包括価格)が得られることがわかりました。

ただし、このaddFinalPrice()方法を含めると、私のコレクションに在庫切れの商品が含まれなくなります。

正しい価格データを返し、コレクションに販売可能な商品と在庫切れの商品の両方を含める方法はありますか?

回答:


3

addFinalPrice()も呼び出しますapplyProductLimitationFilters。このメソッドは、現在のストアに表示されている商品のみを表示するストアフィルターのように、コレクションの構成方法に応じていくつかのフィルターを適用します。

表示されているかどうかにかかわらず、すべての商品を価格フィルターなしでロードする場合は、次のよう呼び出す前に次のようにストアフィルターを削除できますaddFinalPrice()

$collection->setStoreId(null);

@fschmengler-ありがとう、これはより良いオプションのようです。
BrynJ

1

私はこの問題を解決しましたが、実際には非常にシンプルで論理的です。Configuration -> Catalog -> Inventory「在庫切れの商品の表示」に移動して設定するだけで済みましたYes

上記をに設定しYesaddFinalPrice()メソッドをコレクションに追加すると、すべての製品と正しい価格データを取得できます。


どこでも在庫切れの商品を表示する場合は、これで問題ありません。このコレクションだけの場合は、以下の私の回答を参照してください
ファビアンシュメングラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.