製品コレクションからグループ化された製品の最小価格を取得するにはどうすればよいですか?
-
16-10-2019 - |
質問
製品コレクションリソースモデルを使用して、すべての製品をロードしています。
$_categoryId = $this->getCategoryId();
$_productCollection = Mage::getResourceModel('catalog/product_collection')
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents()
->addCategoryFilter(Mage::getModel('catalog/category')->load($_categoryId))
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4);
ただし、たとえば、グループ化された製品の最小価格を表示することはできません。
echo $_productCollection->getFirstItem()->getMinimalPrice();
これは、シンプルな製品で機能します。これは、これがカタログ/Product_Listブロックではなく、コア/テンプレートブロックタイプであるという事実に関連しているようです。ただし、Catalog/Product_Listを使用することは、他の理由によりオプションではありません。
解決
コードを更新して、 *を選択するだけでなく、代わりにカタログ構成属性を使用する場合、コードはすべての製品タイプで動作します。
Mage::getSingleton('catalog/config')->getProductAttributes()
あなたのコードは次のように見えるはずです。
$_categoryId = $this->getCategoryId();
$_productCollection = Mage::getResourceModel('catalog/product_collection')
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents()
->addCategoryFilter(Mage::getModel('catalog/category')->load($_categoryId))
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4);
この場合、製品の種類ごとに正しい最小価格がロードされます。
所属していません magento.stackexchange