2
votes

I have a question that I think might apply to many Magento developers and administrators.

In my search to find a way to display a price range for configurable products (see image below), I thought of an idea. Since there are no extensions that display a price range for configurable products without some sort of additional self-hack, I wondered what you guys thought of this idea. Since I am not much of a PHP developer, I hoped you guys would be able to point me in the right direction if it could work.

enter image description here

Idea: Assuming you have a configurable product set up with it's price being the lowest price of all associated single products, we create a new attribute and manually enter the max price of the associated single products. For many this approach may not ideal since it requires repetitive data entry, but for many administrators, the result is worth the extra effort. Additionally, this extra data entry can be automated by excel for a lot of administrators.

Now, somehow display that attribute in the .phtml template file found in:

 app/design/frontend/base/default/template/catalog/product/price.phtml

The question is, do you guys think that approach would work? What would be the consequences? Does this same file generate price inside the shopping cart, or some other unwanted consequence?

If this does work I was thinking of the following logic:

  1. Find product's attribute from database and store value in variable
  2. If variable is greater than zero, echo " - '$'$variable";

That way, simple products that do not have any data for this variable do not get price ranges displayed.

If this approach would work, how would one retrieve this custom attribute from the database most efficiently in the price.phtml file?

Please view the entire price.phtml file below. I've included a comment <!--Here test test--> to point out where the price is echoed on my page for all configurable products and simple products.

Thank you for your help in advance!

First, what do you guys think of this approach?

<?php
/**
 * Template for displaying product price in different places (products grid, product     view page etc)
 *
 * @see Mage_Catalog_Block_Product_Abstract
 */
?>
<?php
    $_coreHelper = $this->helper('core');
    $_weeeHelper = $this->helper('weee');
    $_taxHelper  = $this->helper('tax');
    /* @var $_coreHelper Mage_Core_Helper_Data */
    /* @var $_weeeHelper Mage_Weee_Helper_Data */
    /* @var $_taxHelper Mage_Tax_Helper_Data */

    $_product = $this->getProduct();
    $_storeId = $_product->getStoreId();
    $_id = $_product->getId();
    $_weeeSeparator = '';
    $_simplePricesTax = ($_taxHelper->displayPriceIncludingTax() || $_taxHelper->displayBothPrices());
    $_minimalPriceValue = $_product->getMinimalPrice();
    $_minimalPrice = $_taxHelper->getPrice($_product, $_minimalPriceValue,     $_simplePricesTax);
?>

<?php if (!$_product->isGrouped()): ?>
    <?php $_weeeTaxAmount = $_weeeHelper->getAmountForDisplay($_product); ?>
    <?php if ($_weeeHelper->typeOfDisplay($_product, array(Mage_Weee_Model_Tax::DISPLAY_INCL_DESCR, Mage_Weee_Model_Tax::DISPLAY_EXCL_DESCR_INCL, 4))): ?>
        <?php $_weeeTaxAmount = $_weeeHelper->getAmount($_product); ?>
        <?php $_weeeTaxAttributes = $_weeeHelper->getProductWeeeAttributesForDisplay($_product); ?>
    <?php endif; ?>
    <?php $_weeeTaxAmountInclTaxes = $_weeeTaxAmount; ?>
    <?php if ($_weeeHelper->isTaxable() && !$_taxHelper->priceIncludesTax($_storeId)): ?>
        <?php $_attributes = $_weeeHelper->getProductWeeeAttributesForRenderer($_product, null, null, null, true); ?>
        <?php $_weeeTaxAmountInclTaxes = $_weeeHelper->getAmountInclTaxes($_attributes); ?>
    <?php endif; ?>

    <div class="price-box">
    <?php $_price = $_taxHelper->getPrice($_product, $_product->getPrice()) ?>
    <?php $_regularPrice = $_taxHelper->getPrice($_product, $_product->getPrice(), $_simplePricesTax) ?>
    <?php $_finalPrice = $_taxHelper->getPrice($_product, $_product->getFinalPrice()) ?>
    <?php $_finalPriceInclTax = $_taxHelper->getPrice($_product, $_product->getFinalPrice(), true) ?>
    <?php $_weeeDisplayType = $_weeeHelper->getPriceDisplayType(); ?>
    <?php if ($_finalPrice >= $_price): ?>
        <?php if ($_taxHelper->displayBothPrices()): ?>
            <?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 0)): // including ?>
                <span class="price-excluding-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                    <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, false) ?>
                    </span>
                </span>
                <span class="price-including-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
                    <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?>
                    </span>
                </span>
            <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 1)): // incl. + weee ?>
                <span class="price-excluding-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                    <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, false) ?>
                    </span>
                </span>
                <span class="price-including-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
                    <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?>
                    </span>
                    <span class="weee">(
                        <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
                            <?php echo $_weeeSeparator; ?>
                            <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?>
                            <?php $_weeeSeparator = ' + '; ?>
                        <?php endforeach; ?>
                        )</span>
                </span>
            <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 4)): // incl. + weee ?>
                <span class="price-excluding-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                    <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, false) ?>
                    </span>
                </span>
                <span class="price-including-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
                    <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?>
                    </span>
                    <span class="weee">(
                        <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
                            <?php echo $_weeeSeparator; ?>
                            <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount() + $_weeeTaxAttribute->getTaxAmount(), true, true); ?>
                            <?php $_weeeSeparator = ' + '; ?>
                        <?php endforeach; ?>
                    )</span>
                </span>
            <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 2)): // excl. + weee + final ?>
                <span class="price-excluding-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                    <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_price, true, false) ?>
                    </span>
                </span>
                <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
                    <span class="weee">
                        <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?>
                    </span>
                <?php endforeach; ?>
                <span class="price-including-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
                    <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?>
                    </span>
                </span>
            <?php else: ?>
                <span class="price-excluding-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                    <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php if ($_finalPrice == $_price): ?>
                        <?php echo $_coreHelper->currency($_price, true, false) ?>
                        <?php else: ?>
                        <?php echo $_coreHelper->currency($_finalPrice, true, false) ?>
                        <?php endif; ?>
                    </span>
                </span>
                <span class="price-including-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
                    <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_finalPriceInclTax, true, false) ?>
                    </span>
                </span>
            <?php endif; ?>
        <?php else: ?>
            <?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 0)): // including ?>
                <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                    <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, true) ?>
                </span>
            <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 1)): // incl. + weee ?>
                <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                    <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, true) ?>
                </span>
                <span class="weee">(
                    <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
                        <?php echo $_weeeSeparator; ?>
                        <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?>
                        <?php $_weeeSeparator = ' + '; ?>
                    <?php endforeach; ?>
                    )</span>
            <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 4)): // incl. + weee ?>
                <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                    <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, true) ?>
                </span>
                <span class="weee">(
                    <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
                        <?php echo $_weeeSeparator; ?>
                        <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount() + $_weeeTaxAttribute->getTaxAmount(), true, true); ?>
                        <?php $_weeeSeparator = ' + '; ?>
                    <?php endforeach; ?>
                    )</span>
            <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 2)): // excl. + weee + final ?>
                <span class="regular-price"><?php echo $_coreHelper->currency($_price,true,true) ?></span><br />
                <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
                    <span class="weee">
                        <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?>
                </span>
            <?php endforeach; ?>
            <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, true) ?>
            </span>
        <?php else: ?>
            <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php if ($_finalPrice == $_price): // this is where price is generated ?> <!--Here test test-->  
                    <?php echo $_coreHelper->currency($_price, true, true) ?>
                <?php else: ?>
                    <?php echo $_coreHelper->currency($_finalPrice, true, true) ?>
                <?php endif; ?>
            </span>
        <?php endif; ?>
    <?php endif; ?>
<?php else: /* if ($_finalPrice == $_price): */ ?>
    <?php $_originalWeeeTaxAmount = $_weeeHelper->getOriginalAmount($_product); ?>

    <?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 0)): // including ?>
        <p class="old-price">
            <span class="price-label"><?php echo $this->__('Regular Price:') ?></span>
            <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_regularPrice + $_originalWeeeTaxAmount, true, false) ?>
            </span>
        </p>

        <?php if ($_taxHelper->displayBothPrices()): ?>
            <p class="special-price">
                <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
                <span class="price-excluding-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                    <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_finalPrice + $_weeeTaxAmount, true, false) ?>
                    </span>
                </span>
            <span class="price-including-tax">
                <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
                <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                    <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?>
                </span>
            </span>
            </p>
        <?php else: ?>
        <p class="special-price">
            <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
            <span class="price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_finalPrice + $_weeeTaxAmountInclTaxes, true, false) ?>
            </span>
        </p>
        <?php endif; ?>

    <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 1)): // incl. + weee ?>
        <p class="old-price">
            <span class="price-label"><?php echo $this->__('Regular Price:') ?></span>
            <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_regularPrice + $_originalWeeeTaxAmount, true, false) ?>
            </span>
        </p>

        <p class="special-price">
            <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
            <span class="price-excluding-tax">
                <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                    <?php echo $_coreHelper->currency($_finalPrice + $_weeeTaxAmount, true, false) ?>
                </span>
            </span>
        <span class="weee">(
            <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
                <?php echo $_weeeSeparator; ?>
                <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?>
                <?php $_weeeSeparator = ' + '; ?>
            <?php endforeach; ?>
            )</span>
        <span class="price-including-tax">
            <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
            <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?>
            </span>
        </span>
        </p>
    <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 4)): // incl. + weee ?>
        <p class="old-price">
            <span class="price-label"><?php echo $this->__('Regular Price:') ?></span>
            <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_regularPrice + $_originalWeeeTaxAmount, true, false) ?>
            </span>
        </p>

        <p class="special-price">
            <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
            <span class="price-excluding-tax">
                <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                    <?php echo $_coreHelper->currency($_finalPrice + $_weeeTaxAmount, true, false) ?>
                </span>
            </span>
        <span class="weee">(
            <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
                <?php echo $_weeeSeparator; ?>
                <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount() + $_weeeTaxAttribute->getTaxAmount(), true, true); ?>
                <?php $_weeeSeparator = ' + '; ?>
            <?php endforeach; ?>
            )</span>
        <span class="price-including-tax">
            <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
            <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?>
            </span>
        </span>
        </p>
    <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 2)): // excl. + weee + final ?>
        <p class="old-price">
            <span class="price-label"><?php echo $this->__('Regular Price:') ?></span>
            <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_regularPrice, true, false) ?>
            </span>
        </p>

        <p class="special-price">
            <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
            <span class="price-excluding-tax">
                <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                    <?php echo $_coreHelper->currency($_finalPrice, true, false) ?>
                </span>
            </span>
            <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
                <span class="weee">
                    <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?>
                </span>
            <?php endforeach; ?>
            <span class="price-including-tax">
                <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
                <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                    <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?>
                </span>
            </span>
        </p>
    <?php else: // excl. ?>
        <p class="old-price">
            <span class="price-label"><?php echo $this->__('Regular Price:') ?></span>
            <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_regularPrice, true, false) ?>
            </span>
        </p>

        <?php if ($_taxHelper->displayBothPrices()): ?>
            <p class="special-price">
                <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
                <span class="price-excluding-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                    <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_finalPrice, true, false) ?>
                    </span>
                </span>
                <span class="price-including-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
                    <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_finalPriceInclTax, true, false) ?>
                    </span>
                </span>
            </p>
        <?php else: ?>
        <p class="special-price">
            <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
            <span class="price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_finalPrice, true, false) ?>
            </span>
        </p>
        <?php endif; ?>
    <?php endif; ?>

<?php endif; /* if ($_finalPrice == $_price): */ ?>

<?php if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue     < $_product->getFinalPrice()): ?>

    <?php $_minimalPriceDisplayValue = $_minimalPrice; ?>
    <?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, array(0, 1, 4))): ?>
        <?php $_minimalPriceDisplayValue = $_minimalPrice + $_weeeTaxAmount; ?>
    <?php endif; ?>

    <?php if ($this->getUseLinkForAsLowAs()):?>
    <a href="<?php echo $_product->getProductUrl(); ?>" class="minimal-price-link">
    <?php else:?>
    <span class="minimal-price-link">
    <?php endif?>
        <span class="label"><?php echo $this->__('As low as:') ?></span>
        <span class="price" id="product-minimal-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
            <?php echo $_coreHelper->currency($_minimalPriceDisplayValue, true, false) ?>
        </span>
    <?php if ($this->getUseLinkForAsLowAs()):?>
    </a>
    <?php else:?>
    </span>
    <?php endif?>
<?php endif; /* if ($this->getDisplayMinimalPrice() && $_minimalPrice && $_minimalPrice     < $_finalPrice): */ ?>
</div>

<?php else: /* if (!$_product->isGrouped()): */ ?>
<?php
$_exclTax = $_taxHelper->getPrice($_product, $_minimalPriceValue);
$_inclTax = $_taxHelper->getPrice($_product, $_minimalPriceValue, true);
?>
<?php if ($this->getDisplayMinimalPrice() && $_minimalPriceValue): ?>
    <div class="price-box">
        <p class="minimal-price">
            <span class="price-label"><?php echo $this->__('Starting at:') ?></span>
            <?php if ($_taxHelper->displayBothPrices()): ?>
                <span class="price-excluding-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
                    <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_exclTax, true, false) ?>
                    </span>
                </span>
                <span class="price-including-tax">
                    <span class="label"><?php echo $this->helper('tax')->__('Incl.       Tax:') ?></span>
                    <span class="price" id="price-including-tax-<?php echo $_id ?><?php     echo $this->getIdSuffix() ?>">
                        <?php echo $_coreHelper->currency($_inclTax, true, false) ?>
                    </span>
                </span>
            <?php else: ?>
                <?php
                $_showPrice = $_inclTax;
                if (!$_taxHelper->displayPriceIncludingTax()) {
                    $_showPrice = $_exclTax;
                }
                ?>
            <span class="price" id="product-minimal-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
                <?php echo $_coreHelper->currency($_showPrice, true, false) ?>
            </span>
            <?php endif; ?>
        </p>
    </div>
<?php endif; /* if ($this->getDisplayMinimalPrice() && $_minimalPrice): */ ?>
<?php endif; /* if (!$_product->isGrouped()): */ ?>
1

1 Answers

1
votes

Okay, so I got it working and it displays correctly in all areas of the site. But, I hope someone can improve on this since I am not much of a PHP developer and I am sure there are better ways to do what I've done.

Here is what I did step by step:

First: Create a copy of the price.phtml file and store it in your theme's directory

Original File:

app/design/frontend/base/default/template/catalog/product/price.phtml

New File:

app/design/frontend/{package}/{theme}/template/catalog/product/price.phtml

Second: Open the price.phtml under theme. Go to line 200. The following is the code that generates the price on all my simple and configurable products. Hopefully that is the case for you too.

    <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
        <?php if ($_finalPrice == $_price): ?>
            <?php echo $_coreHelper->currency($_price, true, true) ?>

Third. Create a new attribute. I called mine "Price From" with an attribute code of "price_from"

Fourth. Insert this line of code on your price.phtml file before this line: <?php echo $_coreHelper->currency($_price, true, true) ?>

Code to Insert:

<?php $priceFrom = Mage::getResourceModel('catalog/product')->getAttributeRawValue($_id, 'price_from', 1);  ?>

In this line of code, a variable $priceForm is created and is assigned the value of the attribute with attribute code "price_from" given $_id (an created ID variable calculated for you in price.phtml) and a store ID (1 in my case).

Fifth. From there, I think most of you can figure out the rest, but here is my price.phtml edits.

     <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
         <?php if ($_finalPrice == $_price): ?>
                <?php $priceFrom = Mage::getResourceModel('catalog/product')->getAttributeRawValue($_id, 'price_from', 1);  ?>
                <?php $formattedPrice = round($priceFrom,2); ?>
                <?php echo $_coreHelper->currency($_price, true, true) ?>
                <?php if ($priceFrom > 0): ?><span class="price price-from"> - <?php echo '$'; ?><?php echo $formattedPrice; ?></span><?php endif; ?>

Sixth. Then, since this price.phtml also generates the HTML for the price on the Product Page, I used CSS to hide my added HTML on the product page. The CSS is as follows:

     .product-type-data .price-box .price.price-from {
         display: none;
     }

And there you have it. I would really love if anyone posted some criticism with better ways of doing this. Perhaps this will cause some problems I do not yet notice.

Thank you all!