1

Is there anyway I can add the category banner to the product view page. I tried adding the following code (taken from category/view.phtml) to product/view.phtml but it resulted in a 'fatal call error' can anyone help?

                        <?php $_product = $this->getProduct(); ?>
        <?php
                $_helper    = $this->helper('catalog/output');
                $_category  = $this->getCurrentCategory();
                $_imgHtml   = '';
                if ($_imgUrl = $_category->getImageUrl()) {
                    $_imgHtml = '<p class="category-image"><img src="'.$_imgUrl.'" alt="'.$this->escapeHtml($_category->getName()).'" title="'.$this->escapeHtml($_category->getName()).'" /></p>';
                    $_imgHtml = $_helper->categoryAttribute($_category, $_imgHtml, 'image');
                }
            ?>

            <?php if($_imgUrl): ?>
                <?php echo $_imgHtml ?>
            <?php endif; ?>
        <script type="text/javascript">
            var optionsPrice = new Product.OptionsPrice(<?php echo $this->getJsonConfig() ?>);
        </script>
        <div id="messages_product_view"><?php echo $this->getMessagesBlock()->toHtml() ?></div>
        <div class="product-view">
            <div class="product-essential">
                <form action="<?php echo $this->getSubmitUrl($_product, array('_secure' => $this->_isSecure())) ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>
                    <?php echo $this->getBlockHtml('formkey') ?>
                    <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">
                        <div class="product-name">
                            <h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1>
                        </div>
                        <?php echo $this->getChildHtml('media') ?>
                    </div>

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


                        <div class="extra-info">
                            <?php echo $this->getReviewsSummaryHtml($_product, 'default', false)?>
                            <?php /* echo $this->getChildHtml('product_type_availability'); */ ?>
                        </div>

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

                        <?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="price-info">
                            <?php echo $this->getPriceHtml($_product); ?>
                            <?php echo $this->getChildHtml('bundle_prices') ?>
                            <?php echo $this->getTierPriceHtml() ?>
                        </div>

                        <div class="add-to-cart-wrapper">
                        <?php echo $this->getChildHtml('product_type_data') ?>
                        <?php echo $this->getChildHtml('extrahint') ?>

                        <?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)): ?>
                                        <span class="or"><?php echo $this->__('OR') ?></span>
                                    <?php endif; ?>
                                <?php endif; ?>
                                <?php /* echo $this->getChildHtml('addto') ?>
                                <?php echo $this->getChildHtml('sharing') */?>
                            </div>
                            <?php echo $this->getChildHtml('extra_buttons') ?>
                        <?php elseif (!$_product->isSaleable()): ?>
                            <!--<div class="add-to-box">
                                <?php echo $this->getChildHtml('addto') ?>
                                <?php echo $this->getChildHtml('sharing') ?>
                            </div>-->
                        <?php endif; ?>
                    </div>

                        <?php echo $this->getChildHtml('other');?>

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

                    </div>

                    <?php echo $this->getChildHtml('related_products') ?>

                    <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'];
                            // Remove custom datetime validators
                            for (var methodName in Validation.methods) {
                                if (methodName.match(/^validate-datetime-.*/i)) {
                                    delete Validation.methods[methodName];
                                }
                            }

                            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 toggle-content tabs">
                <?php if ($detailedInfoGroup = $this->getChildGroup('detailed_info', 'getChildHtml')):?>
                    <dl id="collateral-tabs" class="collateral-tabs">
                        <?php foreach ($detailedInfoGroup as $alias => $html):?>
                            <dt class="tab"><span><?php echo $this->escapeHtml($this->getChildData($alias, 'title')) ?></span></dt>
                            <dd class="tab-container">
                                <div class="tab-content"><?php echo $html ?></div>
                            </dd>
                        <?php endforeach;?>
                    </dl>
                <?php endif; ?>
            </div>

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

        </div>
2

You can not fulfill your requirement easily

There have few conditions for showing the category images at product view

If current product url is contain category path.Then from registry variable Mage::registry('current_category').You can get category object easily.Then you get category banner

<?php
if(Mage::registry('current_category')):
$_category=Mage::registry('current_category');
$_helper    = Mage::helper('catalog/output');
    $_imgHtml   = '';
    if ($_imgUrl = $_category->getImageUrl()) {
        $_imgHtml = '<p class="category-image"><img src="'.$_imgUrl.'"     alt="'.$this->escapeHtml($_category->getName()).'" title="'.$this->escapeHtml($_category->getName()).'" /></p>';
        $_imgHtml = $_helper->categoryAttribute($_category, $_imgHtml, 'image');
    }?>

    <?php if($_imgUrl): ?>
    <?php echo $_imgHtml ?>
    <?php endif; ?>

<?php endif; ?>   

If this registry variable does not give result then you need to get category id's from product (getCategory()).

Then using category model,you can get that particulate product categories banner images.

<?php
$ids = $_product->getCategoryIds();
if(!empty($ids)){
    foreach($ids as $eachCatid):
    $_category= Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->load(eachCatid);
$_helper    = Mage::helper('catalog/output');
    $_imgHtml   = '';
    if ($_imgUrl = $_category->getImageUrl()) {
        $_imgHtml = '<p class="category-image"><img src="'.$_imgUrl.'"     alt="'.$this->escapeHtml($_category->getName()).'" title="'.$this->escapeHtml($_category->getName()).'" /></p>';
        $_imgHtml = $_helper->categoryAttribute($_category, $_imgHtml, 'image');
    }?>

    <?php if($_imgUrl): ?>
    <?php echo $_imgHtml ?>
    <?php endif; ?>
<?php
    endforeach;
 } ?>

Add <?php $_product = $this->getProduct(); ?>code at top of product/view.phtml

  • can you please tell.the object name of product in view .phtml' – Amit Bera Sep 29 '15 at 18:49
  • Where would I get the object name please? – YorkieMagento Sep 30 '15 at 7:44
  • can u plz show view.phtml code? – Amit Bera Sep 30 '15 at 8:00
  • Added view.phtml code to orgiinal post Amit thanks. – YorkieMagento Sep 30 '15 at 17:33
  • want to see product/view.phtml full code.. – Amit Bera Sep 30 '15 at 18:43

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.