我有一段代码可以返回包含价格的产品数据。但是对于分组产品,它不会给出价格。
有没有办法获取分组产品的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并查找该组的最低价格,然后返回价格。
答案 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());