我想寻求一些帮助我的查询请。
我创建了一个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页面的方法,但每种方法都会导致错误或产品不显示。
有人能帮助我或推荐我一个循序渐进的指南吗?
先谢谢你
3条答案
按热度按时间wqsoz72f1#
简单的修复,使它不会抛出的错误将
但是,您仍然需要找出代码中的缺陷,以了解为什么
$_productCollection
没有被加载。zzwlnbp82#
解决了!!
yvt65v4c3#
同样的错误也发生在我身上。我在XAMPP服务器上使用的是magento 1.9.1。我只刷新了所有magento索引,一切正常。
转到“系统/索引管理”,选择所有选项并执行“重新索引数据”操作