ランダム製品の収集、GetPriceHTMLは間違った値を与えます
-
16-10-2019 - |
質問
私は1時間ごとにリフレッシュする製品のランダムリストを作成しています。私はそれのほとんどを成し遂げましたが、1つの問題があります: getPriceHTML
戻ってきています NULL
. 。この関数は、通常のカテゴリ製品リストで使用され、そこで完全に機能します。
このコードは正しいものを与えます getPriceHTML
$_productCollection = Mage::getModel('catalog/product')->getCollection();
しかし、私が必要とするのは、どんなカテゴリがあってもランダム製品を取得することです。それがオプションではありません。
次のコードは、ランダム製品を取得するために使用するコードです。
$this->_productCollection = Mage::getResourceModel('catalog/product_collection');
Mage::getModel('catalog/layer')->prepareProductCollection($this->_productCollection);
$this->_productCollection->getSelect()->order('rand()');
$this->_productCollection->addStoreFilter();
$this->_productCollection->setPage(1, 3);
そして後で:
foreach($this->_productCollection AS $_product)
{
echo $this->getPriceHtml($_product, true);
}
シンプルな製品の場合、これは正しい価格を与えますが、戻ります NULL
グループ化された製品用。はい、私は拡張しています Mage_Catalog_Block_Product
.
価格を取得するための他の機能があることを知っていることに注意してください。
解決
getPriceHtml()の2つの実装をご覧ください
mage_catalog_block_product
public function getPriceHtml($product)
{
$this->setTemplate('catalog/product/price.phtml');
$this->setProduct($product);
return $this->toHtml();
}
vs。
mage_catalog_block_product_abstract
public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')
{
return $this->_preparePriceRenderer($product->getTypeId())
->setProduct($product)
->setDisplayMinimalPrice($displayMinimalPrice)
->setIdSuffix($idSuffix)
->toHtml();
}
抽象ブロックから拡張すると、正しいレンダラーを取得するのに役立ちます。
所属していません magento.stackexchange