1

我已经研究了很多,但我没有找到适合我的解决方案。

我试图在主页的特色产品部分中显示超过 5 件的默认产品数量。

我目前有 10 个项目设置为“新”,但只有 5 个会显示。

关于如何在不更改核心代码的情况下执行此操作的任何提示?

http://saks-jewelers.com

(忽略我正在处理的底部的滑块)

编辑以解释我目前如何显示它们

我已经使用我创建的模板 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>
4

3 回答 3

0

如果你这样做了echo count($_products),你可能会发现它总是 5。那是因为块正在确定加载什么集合。打开包含该$this->getProductCollection()功能的块并按照代码进行操作。该集合可能会通过 Mage::getStoreConfig 调用后端设置来限制在某个地方。我希望这有帮助!

于 2013-03-08T21:20:17.130 回答
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);

于 2013-03-09T15:42:49.617 回答
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 个产品。

于 2013-03-09T17:02:04.270 回答