magento 致命错误:对中的非对象调用成员函数count()

6g8kf2rb  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(131)

我想寻求一些帮助我的查询请。
我创建了一个CMS页面,并希望在列表中显示特定类别的产品。因此,我创建了一个模块,并粘贴了catalog/product/list.phtml中的完整代码,以查看它是否会工作...
不幸的是,我得到了这个错误:Fatal error: Call to a member function count() on a non-object in /Applications/MAMP/htdocs/mysite/app/design/frontend/bootstrapped/default/template/cmsproducts/index.phtml on line 23
下面是list.phtml中的代码

<?php echo get_class($this);
/**
 * Magento responsive theme
 *
 * @category    design
 * @package     bootstrapped_default
 * @copyright   Copyright (c) 2012 Magenthon (http://magenthon.com)
 * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 * @author      Vedran Subotic <vedran@magenthon.com>
 */
?>
<?php
/**
 * Product list template
 *
 * @see Mage_Catalog_Block_Product_List
 */
?>
<?php
    $_productCollection=$this->getLoadedProductCollection();
    $_helper = $this->helper('catalog/output');
?>
<?php if(!$_productCollection->count()): ?>
<div class="alert fade in">
  <a class="close" data-dismiss="alert">×</a>
  <?php echo $this->__('There are no products matching the selection.') ?>
</div>
<?php else: ?>
<div class="category-products">
    <?php echo $this->getToolbarHtml() ?>
    <?php // List mode ?>
    <?php if($this->getMode()!='grid'): ?>
    <?php $_iterator = 0; ?>
    <ol class="products-list unstyled row-fluid" id="products-list">
        <?php foreach ($_productCollection as $_product): ?>
        <li class="item<?php if( ++$_iterator == sizeof($_productCollection) ): ?> last<?php endif; ?> row-fluid">
            <?php // Product Image ?>
            <div class="span4"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image thumbnail"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(225); ?>" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a></div>
            <?php // Product description ?>
            <div class="span8">
                <div class="thumbnail data">
                    <div class="caption">
                    <?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
                    <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product, $_product->getName() , 'name'); ?></a></h2>
                    <?php if($_product->getRatingSummary()): ?>
                        <?php echo $this->getReviewsSummaryHtml($_product) ?>
                    <?php endif; ?>
                    <div class="row-fluid">
                        <span class="pull-right">
                            <?php if($_product->isSaleable()): ?>
                                <button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="btn btn-danger" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
                            <?php else: ?>
                                <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                            <?php endif; ?>
                        </span>
                        <?php echo $this->getPriceHtml($_product, true) ?>
                    </div>
                    <div class="desc std">
                        <?php echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?>
                        <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More') ?></a>
                    </div>
                    <p class="add-to-links unstyled">
                        <?php if ($this->helper('wishlist')->isAllow()) : ?>
                        <a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist label label-info"><?php echo $this->__('Add to Wishlist') ?></a>
                        <?php endif; ?>
                        <?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
                        <span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare label label-info"><?php echo $this->__('Add to Compare') ?></a>
                        <?php endif; ?>
                    </p>
                    </div>
                </div>
            </div>
        </li><hr>
        <?php endforeach; ?>
    </ol>
    <script type="text/javascript">decorateList('products-list', 'none-recursive')</script>

    <?php else: ?>

    <?php // Grid Mode ?>

    <?php $_collectionSize = $_productCollection->count() ?>
    <?php $_columnCount = $this->getColumnCount(); ?>
    <?php $i=0; foreach ($_productCollection as $_product): ?>
        <?php if ($i++%$_columnCount==0): ?>
            <ul class="products-grid unstyled thumbnails row-fluid">
            <?php endif ?>
            <li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?> span4">
                <div class="thumbnail">
                <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image thumbnail"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(225); ?>" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>

                <div class="caption">
                    <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
                    <?php if($_product->getRatingSummary()): ?>
                    <?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
                    <?php endif; ?>
                    <?php echo $this->getPriceHtml($_product, true) ?>
                    <?php if($_product->isSaleable()): ?>
                        <button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="btn btn-danger btn-mini" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
                    <?php else: ?>
                        <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                    <?php endif; ?>
                    <p class="add-to-links unstyled">
                        <?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
                        <a href="<?php echo $_compareUrl ?>" class="link-compare label label-info pull-right"><?php echo $this->__('Add to Compare') ?></a>
                        <?php endif; ?>
                        <?php if ($this->helper('wishlist')->isAllow()) : ?>
                            <a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist label label-info"><?php echo $this->__('Add to Wishlist') ?></a>
                        <?php endif; ?>

                    </p>
                </div>
                </div>
            </li>
            <?php if ($i%$_columnCount==0 || $i==$_collectionSize): ?>
            </ul>
        <?php endif ?>
        <?php endforeach ?>
    <script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
    <?php endif; ?>

    <div class="toolbar-bottom">
        <?php
        /* @var $toolbar Mage_Catalog_Block_Product_List_Toolbar */
        // get toolbars limits - overrides default pager limit
        $toolbar = Mage::getBlockSingleton('catalog/product_list_toolbar')->getAvailableLimit();

        /* @var $pager Mage_Page_Block_Html_Pager */
        $pager = $this->getLayout()->createBlock('page/html_pager', 'bootstrapped.standalone.pager');

        // set limit - uses category's instead of default pager's (10-20-50)
        $pager->setAvailableLimit($toolbar);
        // need to set collection
        $pager->setCollection($_productCollection);
        //set custom template
        $pager->setTemplate('catalog/product/list/pager.phtml');
        echo $pager->toHtml();
        ?>
    </div>
</div>
<?php endif; ?>

对于我的CMS块:

{{block type="core/template" category_id="41" template="cmsproducts/index.phtml"}}

我的自定义模块的indexController.php:

<?php
class Thaneuk_Cmsproducts_IndexController extends Mage_Core_Controller_Front_Action{
    public function IndexAction() {  
    }
}

我已经搜索了从一个类别添加产品到CMS页面的方法,但每种方法都会导致错误或产品不显示。
有人能帮助我或推荐我一个循序渐进的指南吗?
先谢谢你

wqsoz72f

wqsoz72f1#

简单的修复,使它不会抛出的错误将

<?php if(is_object($_productCollection) && !$_productCollection->count()): ?>

但是,您仍然需要找出代码中的缺陷,以了解为什么$_productCollection没有被加载。

zzwlnbp8

zzwlnbp82#

解决了!!

<?php 
$category_id = "43"; // category_id for "Featured Products"
$_productCollection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect(array('name', 'price', 'small_image', 'short_description'), 'inner')
->addCategoryFilter(Mage::getModel('catalog/category')->load($category_id));
?>
<?php if($_productCollection->count()): ?>
      <div class="featured">
      <br />
      <ul id="featured-product-list">
        <div class="block-title">
      <h3><span><?php echo $this->__('FEATURED PRODUCT'); ?></span></h3>
    </div>
       <?php 
       $products = array();
       foreach ($_productCollection as $_product) { 
        ?>
        <li class="featured-product">
          <!--<h6>Price <?php echo Mage::helper('core')->currency($_product->getPrice());; ?></h6>-->
          <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>">
            <img class="product-image" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(225, 200); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" />
          </a>
        </li>
       <strong><a class="view-item-button" href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>"><?php echo $this->__('Order'); ?> <?php echo $this->htmlEscape($_product->getName())?><?php echo $this->__('&#8482;'); ?></a></strong>
        <div class="clearfix"></div>
        <p>
            <?php echo $_product->_data['short_description']; ?>
        </p>
        <div class="clearfix"></div>  
        <?php } ?>
      </ul>
</div>  
<?php endif; ?>
yvt65v4c

yvt65v4c3#

同样的错误也发生在我身上。我在XAMPP服务器上使用的是magento 1.9.1。我只刷新了所有magento索引,一切正常。
转到“系统/索引管理”,选择所有选项并执行“重新索引数据”操作

相关问题