質問

私は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();
}

抽象ブロックから拡張すると、正しいレンダラーを取得するのに役立ちます。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top