[英]how do I show more than 5 featured products on homepage in magento 1.7?
我已经研究了很多,但找不到适合我的解决方案。
我试图在首页的“特色产品”部分中显示超过5个项目的默认产品数量。
我目前有10个项目设置为“新”,但只有5个项目会显示。
在不更改核心代码的情况下如何执行此操作的任何提示?
(忽略我正在工作的底部的滑块)
编辑以解释更多我当前如何显示它们
我使用创建的模板phtml文件列出了它们,然后添加了一个静态块以在hp上调用它:
<?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>
<?php $_columnCount = $this->getColumnCount(); ?>
<?php $i=0; foreach ($_products->getItems() as $_product): ?>
<?php if ($i++%$_columnCount==0): ?>
<ul class="featured-products-grid">
<?php endif ?>
<a href="<?php echo $_product->getProductUrl() ?>">
<li >
<div class="drop-shadow curved curved-hz-2">
<img class="product-image" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135) ?>" width="135" height="135" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" />
<h3 class="product-name"><?php echo $this->htmlEscape($_product->getName()) ?></h3>
<?php echo $this->getPriceHtml($_product, true, '-new') ?>
<button type="button" title="View Product" class="button" onclick="setLocation('<?php echo $_product->getProductUrl() ?>')"><span><span>View Product</span></span></button>
</div>
</li></a>
<?php if ($i%$_columnCount==0 || $i==count($_products)): ?>
</ul>
<?php endif ?>
<?php endforeach; ?>
<?php endif; ?>
和静态块代码:
<div id="featured-products-container">
<div class="featured-products-heading"><strong>Featured Products</strong></div>
<div class="featured-products-heading-line"></div>
<div id="featured-products-grid">
{{block type="catalog/product_new" name="home.catalog.product.new" alias="product_homepage" template="catalog/featured-products.phtml"}}
</div>
<div style="clear:both;"></div>
</div>
如果执行了echo count($_products)
,则可能会发现它始终为5。这是因为该块正在确定要加载的集合。 打开包含$this->getProductCollection()
函数的块,然后遵循代码。 该集合可能会通过Mage :: getStoreConfig调用后端设置而限制在某处。 我希望这有帮助!
如果它是用于新产品而不是用于特色产品(因为您将不得不对特色产品使用某些扩展名,并且您未声明任何内容),则需要在\\app\\code\\core\\Mage\\Catalog\\Block\\Product\\New.php
更改该行\\app\\code\\core\\Mage\\Catalog\\Block\\Product\\New.php
$products->setOrder(’news_from_date’)->setPageSize(5)->setCurPage(1);
改成
$products->setOrder(’news_from_date’)->setPageSize(10)->setCurPage(1);
这只是参考代码。 您不应更改任何核心文件,因此需要创建模块并覆盖块类Mage_Catalog_Block_Product_New
在您的.phtml中将此用作代码的第一行
$this->setProductsCount(10);
您正在使用块类Mage_Catalog_Block_Product_New
来显示您的新产品...很好。 让我们看一下块类的定义:
class Mage_Catalog_Block_Product_New extends Mage_Catalog_Block_Product_Abstract
{
protected $_productsCount = null;
const DEFAULT_PRODUCTS_COUNT = 5;
const
定义应该引起您的注意,因为这就是仅显示5个产品的原因。 在Mage_Catalog_Block_Product_New::_beforeToHtml()
函数中,集合被限制为一定数量:
[...]->setPageSize($this->getProductsCount())[...]
public function getProductsCount()
{
if (null === $this->_productsCount) {
$this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
}
return $this->_productsCount;
}
“神奇”的事情(作业:深入研究Magento并找出原因)是_productCount
也可以从模板传递:
{{block products_count="2" type="catalog/product_new" name="home.catalog.product.new" alias="product_homepage" template="catalog/featured-products.phtml"}}
仅显示2个产品。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.