我研究了很多,但我找不到适合我的解决方案。
我正在尝试在我的主页上显示我的“精选产品”部分中的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>
答案 0 :(得分:0)
如果你echo count($_products)
,你可能会发现它总是为5.这是因为块正在确定加载了什么集合。打开包含$this->getProductCollection()
函数的块并按照代码操作。可能会通过Mage :: getStoreConfig调用后端设置来限制集合。
我希望这有帮助!
答案 1 :(得分:0)
如果它用于新产品而非特色产品(因为您将不得不使用某些特色产品的扩展而且您已经说明了任何产品)
您需要更改\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);
答案 2 :(得分:0)
您正在使用块类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个产品。