0

I'm working on a Magento site where I had zero involvement with its theme and honestly have no idea who even made it (the clients are not helpful).

Anyways, I'm setting up Bundle Products and both the price; enter image description here

and price as configured ; enter image description here

Display as zero. I'm honestly not great with Magento's fairly confusing themeing system but the theme is located at; app/design/frontend/default/themename/

The Price is calculated from frontend/base/default/template/catalog/product/price.phtml

While Price as Configured is calculated(?) from; frontend/base/default/template/bundle/catalog/product/view/price.phtml

Strangely on the search page (one that displays the test bundle) it does show the correct price and seems to pull it from frontend/base/default/template/bundle/catalog/product/price.phtml

I've tried a number of things searching for similar issues to mine but been completely unsuccessful.

The test bundle page seems to be displayed via frontend/default/themename/template/catalog/product/view.phtml

I also have this error on the page load;

ReferenceError: bundle is not defined[Learn More]      test-bundle.html:1674:5
    <anonymous>                                  /test-bundle.html:1674:5
    responder                                   js/prototype/prototype.js:5575:9
    fire                                        /js/prototype/prototype.js:5734:7
    methodize/this._methodized                  /js/prototype/prototype.js:438:14
    fireContentLoadedEvent                      /js/prototype/prototype.js:5820:5

Here is the view.phtml (I'll share the other two if wanted?)

<?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License (AFL 3.0)
 * that is bundled with this package in the file LICENSE_AFL.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/afl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@magentocommerce.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magentocommerce.com for more information.
 *
 * @category    design
 * @package     default_modern
 * @copyright   Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
 * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 */

/**
 * Product view template
 *
 * @see Mage_Catalog_Block_Product_View
 * @see Mage_Review_Block_Product_View
 */
?>
<?php $_helper = $this->helper('catalog/output'); ?>
<?php $_product = $this->getProduct(); ?>


<script type="text/javascript">
    var optionsPrice = new Product.OptionsPrice(<?php echo $this->getJsonConfig() ?>);
</script>
<div id="messages_product_view"><?php echo $this->getMessagesBlock()->getGroupedHtml() ?></div>

<div class="product-view">

<h2 class="title_quick">
Add to your bag!
</h2>
    <div class="product-essential">
    <form action="<?php echo $this->getSubmitUrl($_product) ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>
        <div class="no-display">
            <input type="hidden" name="product" value="<?php echo $_product->getId() ?>" />
            <input type="hidden" name="related_product" id="related-products-field" value="" />
        </div>



        <div class="product-img-box">
            <?php echo $this->getChildHtml('media') ?>
        </div>

        <div class="product-shop">  
        <div class="stock_quick">
            In Stock
        </div>
        <div class="product-name">
                <h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1>
        </div>

        <div class='product-extra'>
            <div class="ptype"><?php echo $_product->getProductType();?></div>

            <div class="pinfo"><?php echo $_product->getPinfo();?></div>
        </div>

            <div class="review_sku">
            <div class="product_rates"><?php echo $this->getReviewsSummaryHtml($_product, false, true)?></div>
            <?php /*?><div class="product_sku">SKU: <?php echo $_product->getSku();?></div>*/ ?>

            </div>
            <?php echo $this->getChildHtml('alert_urls') ?>

            <?php echo $this->getTierPriceHtml() ?>
            <div class="product-price"> 
            <?php echo $this->getPriceHtml($_product, true) ?>


            </div>
            <div class="promo_product">
            <?php
                    $offer = $_product->getOffers();

                    if(!empty($offer)) {        
                        echo $_product->getOffers();    
                    }
            ?> 
            </div>
            <div class="psize">Size: <?php echo $_product->getPinfo();?></div>
            <?php echo $this->getChildHtml('extrahint') ?>

             <?php if ($_product->getShortDescription()):?>
                <div class="short-description">

                    <div class="std"><?php echo $_helper->productAttribute($_product, nl2br($_product->getShortDescription()), 'short_description') ?></div>
                </div>
            <?php endif;?>
            <div class="other_quick">
                <div class="fulldetails"><a href="<?php echo $_product->getProductUrl();?>">Full Details</a></div>
                <div class="social_quick"> <?php echo $this->getLayout()->createBlock('sharingtool/share')->setBlockId('addthis_sharetool')->toHtml(); 
                ?> 

            <!-- Please call pinit.js only once per page -->
                <script type="text/javascript" async defer src="//assets.pinterest.com/js/pinit.js"></script>
                </div>
            </div>
            <div class="review_quick">
                <div class="product_rates"><?php echo $this->getReviewsSummaryHtml($_product, false, true)?></div>
            </div>
            <div class="price_quick">
                <div class="product-price"> <?php echo $this->getPriceHtml($_product, true) ?></div>
            </div>
            <?php if (!$this->hasOptions()):?>
                <div class="add-to-box">
                    <?php if($_product->isSaleable()): ?>
                        <?php echo $this->getChildHtml('addtocart') ?>
                        <?php if( $this->helper('wishlist')->isAllow() || $_compareUrl=$this->helper('catalog/product_compare')->getAddUrl($_product)): ?>

                        <?php endif; ?>
                    <?php endif; ?>

                </div>
            <div class="stockview">
            <?php  
                $stock = $_product->getStockItem();
                if ($stock->getIsInStock()) {
                    echo "in stock";
                } else {
                    echo "Temporarily out of stock";
                }           
                ?>
            </div>
            <?php endif; ?>
            <div class="add-to-box-quick">
                <button onclick="productAddToCartForm.submit(this)" class="button btn-cart" title="Add to Cart" type="button"><span><span></span></span></button>
                <label for="qty">Quantity:</label>
                <input type="text" class="input-text qty" title="Qty" value="1" maxlength="12" id="qty" name="qtyq">
            </div>


            <div class="callout">
            <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('product_callouts')->toHtml(); ?>
            </div>
           <?php echo $this->getLayout()->createBlock('sharingtool/share')->setBlockId('addthis_sharetool')->toHtml(); ?>


           <div class="bottom_quick">
                <span>                  
                    <?php
                    $offer = $_product->getOffers();

                    if(!empty($offer)) {        
                        echo $_product->getOffers();    
                    }


                    ?> 
                </span>
            </div>
            <?php echo $this->getChildHtml('other');?>
            <?php if ($_product->isSaleable() && $this->hasOptions()):?>
                <?php echo $this->getChildChildHtml('container1', '', true, true) ?>
            <?php endif;?>

        </div>

        <div class="clearer"></div>
        <?php if ($_product->isSaleable() && $this->hasOptions()):?>
            <?php echo $this->getChildChildHtml('container2', '', true, true) ?>
        <?php endif;?>
    </form>
    <script type="text/javascript">
    //<![CDATA[
        var productAddToCartForm = new VarienForm('product_addtocart_form');
        productAddToCartForm.submit = function(button, url) {
            if (this.validator.validate()) {
                var form = this.form;
                var oldUrl = form.action;

                if (url) {
                   form.action = url;
                }
                var e = null;
                try {
                    this.form.submit();
                } catch (e) {
                }
                this.form.action = oldUrl;
                if (e) {
                    throw e;
                }

                if (button && button != 'undefined') {
                    button.disabled = true;
                }
            }
        }.bind(productAddToCartForm);

        productAddToCartForm.submitLight = function(button, url){
            if(this.validator) {
                var nv = Validation.methods;
                delete Validation.methods['required-entry'];
                delete Validation.methods['validate-one-required'];
                delete Validation.methods['validate-one-required-by-name'];
                if (this.validator.validate()) {
                    if (url) {
                        this.form.action = url;
                    }
                    this.form.submit();
                }
                Object.extend(Validation.methods, nv);
            }
        }.bind(productAddToCartForm);
    //]]>
    </script>
    </div>

    <div class="product-collateral">

        <?php echo $this->getChildHtml('product_additional_data') ?>
    </div>
</div>

My guess is the original theme creator simply skipped including Bundle functionality? Thanks.

  • I would rename your view.phtml so it stops overriding the core view.phtml and see if the bundle pricing is correct or not. If it is you can compare the two to see what is missing in your template file. – paj Jun 13 '17 at 20:28
  • I can confirm that `frontend/base/default/template/catalog/product/view.phtml' displays the price properly (if i temporarily rename the current themes view.phtml). So I guess I need to figure out the difference between the base view.phtml and the custom themes view.phtml - any help would be appreciated. – amscd Jun 14 '17 at 21:55
0

I've fixed it by using <?php echo $this->getChildHtml('product_type_data') ?> though I can't comment on why that works over what didn't before (fixed through trial and error).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.