1

I Use Mobile Shoppe Theme And i add

{{block type="catalog/product_list" name="home.catalog.product.list" alias="products_homepage" template="catalog/product/list.phtml"}}

to display all the products in the front page. But i get this error

Fatal error: Call to a member function getSize() on a non-object in /home/sree16/public_html/magento/app/design/frontend/default/mobileshoppe/template/catalog/product/list/toolbar_top.phtml on line 34

Any help would be appreciated.

toolbar_top.phtml

<?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 [email protected] 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     base_default 
 * @copyright   Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com) 
 * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL3.0) 
 */ 
?> 
<?php 
/** 
 * Product list toolbar 
 * 
 * @see Mage_Catalog_Block_Product_List_Toolbar 
 */ 
?>
<?php
if($this->getCollection()->getSize()): ?> <div class="toolbar">
    <?php if( $this->isExpanded() ): ?>
    <div class="sorter">
        <?php if( $this->isEnabledViewSwitcher() ): ?>
        <p class="view-mode">
            <?php $_modes = $this->getModes(); ?>
            <?php if($_modes && count($_modes)>1): ?>
            <label><?php echo $this->__('View as') ?>:</label>
            <?php foreach ($this->getModes() as $_code=>$_label): ?>
                <?php if($this->isModeActive($_code)): ?>
                    <strong title="<?php echo $_label ?>" class="<?php echo strtolower($_code); ?>"><?php echo $_label ?></strong>&nbsp;
                <?php else: ?>
                    <a href="<?php echo $this->getModeUrl($_code) ?>" title="<?php echo $_label ?>" class="<?php echo strtolower($_code);
?>"><?php echo $_label ?></a>&nbsp;
                <?php endif; ?>
            <?php endforeach; ?>
            <?php endif; ?>
        </p>
        <?php endif; ?>

                 <div class="limiter">
            <label><?php echo $this->__('Show') ?></label>
            <select onchange="setLocation(this.value)">
            <?php foreach ($this->getAvailableLimit() as  $_key=>$_limit): ?>
                <option value="<?php echo $this->getLimitUrl($_key) ?>"<?php if($this->isLimitCurrent($_key)): ?> selected="selected"<?php
endif ?>>
                    <?php echo $_limit ?>
                </option>
            <?php endforeach; ?>
            </select> <?php echo $this->__('per page') ?>
        </div>

        <div class="sort-by">
            <label><?php echo $this->__('Sort By') ?></label>
            <select onchange="setLocation(this.value)">
            <?php foreach($this->getAvailableOrders() as $_key=>$_order): ?>
                <option value="<?php echo $this->getOrderUrl($_key, 'asc') ?>"<?php if($this->isOrderCurrent($_key)): ?>
selected="selected"<?php endif; ?>>
                    <?php echo $this->__($_order) ?>
                </option>
            <?php endforeach; ?>
            </select>
            <?php if($this->getCurrentDirection() == 'desc'): ?>
                <a href="<?php echo $this->getOrderUrl(null, 'asc') ?>" title="<?php echo $this->__('Set Ascending Direction') ?>"><img
src="<?php echo $this->getSkinUrl('images/i_desc_arrow.gif') ?>"
alt="<?php echo $this->__('Set Ascending Direction') ?>"
class="v-middle" /></a>
            <?php else: ?>
                <a href="<?php echo $this->getOrderUrl(null, 'desc') ?>" title="<?php echo $this->__('Set Descending Direction') ?>"><img
src="<?php echo $this->getSkinUrl('images/i_asc_arrow.gif') ?>"
alt="<?php echo $this->__('Set Descending Direction') ?>"
class="v-middle" /></a>
            <?php endif; ?>
        </div>
    </div>
    <?php endif; ?> </div> <?php endif ?>
3
  • 1
    From what I know the catalog/product/list/toolbar_top.phtml is not a standard Magento file. Can you add its contents to your question?
    – Marius
    Commented Jul 8, 2013 at 17:28
  • @Marius updated
    – Prem Anand
    Commented Jul 8, 2013 at 17:54
  • The code looks similar to the one in toolbar.phtml except the paging. This probably means that the problem is in catalog/product/list.phtml, when calling this template. And by the way, if you want a way to remove the paging from the top of the list you can use this method: magento.stackexchange.com/questions/5380/… It'a a little cleaner.
    – Marius
    Commented Jul 8, 2013 at 18:03

1 Answer 1

1

I believe the issue here is that the toolbar_top.phtml file expects to be instanced with a different block:

{{block type="catalog/product_list" name="home.catalog.product.list" alias="products_homepage" template="catalog/product/list.phtml"}}

Should be:

{{block type="catalog/product_list_toolbar" name="home.catalog.product.list.toolbar.top" alias="products_homepage" template="catalog/product/list.phtml"}}

The reason for this is that Mage_Catalog_Block_Product_List_Toolbar has a method called getCollection, where Mage_Catalog_Block_Product_List does not.

The fluent interface (chained method call) receives null from getCollection, and therefore getSize is being called on a non-object.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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