Magento:按产品ID获得分组产品的最低价格?

时间:2011-01-13 10:39:13

标签: php magento

我有一段代码可以返回包含价格的产品数据。但是对于分组产品,它不会给出价格。

有没有办法获取分组产品的ID并获得该组的最低价格?

这是我的代码:

<?php
    $id_array = strip_tags($this->getLayout()->createBlock('cms/block')->setBlockId('homepage-newest-product')->toHtml());
    $product_id = explode(',',$id_array);


    foreach ($product_id as $id):
        $productDetails = Mage::getModel('catalog/product')->load($id)->getData();
        //var_dump($productDetails);
    ?>
    <li class="a-center span-3">
        <a href="<?php echo $this->getBaseUrl() . $productDetails['url_path']; ?>"><img src="<?php echo $media_url . 'catalog/product' . $productDetails['thumbnail']; ?>" width="80" height="80"/></a>
        <a href="<?php echo $this->getBaseUrl() . $productDetails['url_path']; ?>" class="clearfix"><?php echo $productDetails['name']; ?></a>
        <?php if($productDetails['price']): ?>
        <span>
        <?php echo $_coreHelper->currency($productDetails['price'],true,false) ?>
        </span>
        <?php endif; ?>
    </li>
    <?php endforeach; ?>

我希望我有一个功能,它可以获取分组ID并查找该组的最低价格,然后返回价格。

2 个答案:

答案 0 :(得分:8)

方法如下所示:

public function prepareGroupedProductPrice($groupedProduct)
{
    $aProductIds = $groupedProduct->getTypeInstance()->getChildrenIds($groupedProduct->getId());

    $prices = array();
    foreach ($aProductIds as $ids) {
        foreach ($ids as $id) {
            $aProduct = Mage::getModel('catalog/product')->load($id);
            $prices[] = $aProduct->getPriceModel()->getPrice($aProduct);
        }
    }

    krsort($prices);
    $groupedProduct->setPrice(array_shift($prices));

    // or you can return price
}

此外,您可以使用事件准备价格,但此问题是获得最低团体价格的最简单方法。

答案 1 :(得分:0)

除了它为我返回最高价格外几乎完美无缺。

对于最低价格,函数末尾附近的krsort应该是ksort吗?

您可以测试产品$product是否按以下方式分组:

if ($product->getTypeInstance()->getChildrenIds($product->getId()))
{
    prepareGroupedProductPrice($product);
}
echo($product->getPrice());