Настраиваемые цены на товары показывают 0,00 фунта стерлингов


На странице моей корзины у меня есть рекламные товары, на которых отображаются изображения товаров, названия и цены, однако, когда я добавляю настраиваемый товар в список, цена отображается в размере 0,00 фунта стерлингов. Это код, который я использую, чтобы показать цену.

<?php 
$specialPrice = Mage::helper('core')->formatPrice($_product->getFinalPrice());
$normalPrice = Mage::helper('core')->formatPrice($_product->getPrice());
        if ($normalPrice != $specialPrice){?>
    <div class="sale-price">
        <?php echo  'Now';
        echo  $specialPrice;?></div>
        <?php }else{?>
    <div class="norm-price"><br>
        <?php echo $normalPrice;}?</div>

Я предполагаю, что он показывает 0,00 фунта стерлингов, поскольку он ищет цену продуктов, и поскольку это сгруппированный продукт, сам продукт не имеет фактической цены, так как цены исходят от продуктов в сгруппированных продуктах.

Итак, мой вопрос в том, как я могу проверить, является ли продукт сгруппированным продуктом, и если да, то мне нужно проверить самую низкую цену, а затем отобразить эту цену?

Я нашел некоторый код, который проверяет, является ли продукт сгруппированным продуктом, и если да, то он захватывает связанные продукты, поэтому теперь все, что мне нужно сделать, это создать чек, который проверяет самую низкую цену в связанных продуктах

    <?php if($_product->getTypeId() == "grouped"): 
        $associatedProducts = $product->getTypeInstance(true)->getAssociatedProducts($product);

     endif; ?>

Если вам нужна дополнительная информация или я не совсем ясно выразился, пожалуйста, просто дайте мне знать.

Заранее благодарю вас

Author: Adam Allen, 2014-11-21

1 answers

Предполагая, что ваш приведенный выше код верен в том, как получить цену продажи от продукта, этот код ниже позволит получить соответствующие продукты, повторить их цены продажи и обычные цены и вернуть наименьшее значение.

function getLowest($product){
$associatedProducts = $product->getTypeInstance(true)->getAssociatedProducts($product);
$lowPrice=inf;
foreach($associatedProducts as $associatedProduct){
    $specialPrice = $associatedProduct->getFinalPrice();
    $associatedPrice = $associatedProduct->getPrice();
    if($lowPrice>$associatedPrice){
        $lowPrice=$associatedPrice;
    }
    if($lowPrice>$specialPrice && ($specialPrice!=null||$specialPrice!=0)){
        $lowPrice=$specialPrice;
    }
}
return Mage::helper('core')->formatPrice($lowPrice);
}

Затем просто используйте низкую цену, как вы бы использовали цену, которая у вас есть в настоящее время:)

Надеюсь, это поможет!

 2
Author: hownowbrowncow, 2014-12-03 18:14:51