Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在magento 1.7的主页上显示5种以上的特色产品?_Magento - Fatal编程技术网

如何在magento 1.7的主页上显示5种以上的特色产品?

如何在magento 1.7的主页上显示5种以上的特色产品?,magento,Magento,我已经研究了很多,但我没有找到一个适合我的解决方案 我试图在我的主页上的“特色产品”部分显示超过默认产品数量的5个项目 我有10个项目目前设置为“新”,但只有5个会出现 关于如何在不改变核心代码的情况下做到这一点,有什么建议吗 (忽略我正在处理的底部滑块) 编辑以详细解释我当前如何显示它们 我已经使用我创建的模板phtml文件列出了它们,然后添加了一个静态块来调用我的hp: <?php if (($_products = $this->getProductCollection())

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

我试图在我的主页上的“特色产品”部分显示超过默认产品数量的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>

特色产品
{{block type=“catalog/product\u new”name=“home.catalog.product.new”alias=“product\u homepage”template=“catalog/featured products.phtml”}

如果你做了回波计数($\u产品)你可能会发现它总是5。这是因为块正在确定加载的集合。打开包含
$this->getProductCollection()
函数的块,然后按照代码进行操作。该集合将被限制在某个地方,可能是通过Mage::getStoreConfig调用后端设置。
我希望这有帮助

如果是针对新产品,而不是针对特色产品(因为您必须对特色产品使用一些扩展,并且您没有声明任何扩展) 您需要更改
\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\u Catalog\u block\u Product\u New

在.phtml中使用它作为第一行代码


$this->setProductsCount(10)

您正在使用块类
Mage\u Catalog\u block\u Product\u New
来显示您的新产品。。。一切都好。让我们来看看块类定义:

class Mage_Catalog_Block_Product_New extends Mage_Catalog_Block_Product_Abstract
{
    protected $_productsCount = null;

    const DEFAULT_PRODUCTS_COUNT = 5;
const
定义应该引起您的注意,因为这就是只显示5种产品的原因。 在
Mage\u Catalog\u Block\u Product\u New::\u beforeToHtml()
函数中,集合限制为特定数量:

[…]->setPageSize($this->getProductsCount())[…]

public function getProductsCount()
{
    if (null === $this->_productsCount) {
        $this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
    }
    return $this->_productsCount;
}
“神奇”的事情(家庭作业:深入Magento并找出原因)是
\u productCount
也可以从模板中传递:

{{block products_count="2" type="catalog/product_new" name="home.catalog.product.new" alias="product_homepage" template="catalog/featured-products.phtml"}}

它将只显示两种产品。

我应该指出,我不想创建一个单独的类别来调用这些产品。我想依靠项目的“设置新开始”和“新开始”日期,以便提前安排它们。您实际使用什么来显示这些特色产品?看起来像是一个自定义扩展名,您没有提供任何相关信息。不,没有自定义扩展名,只是创建了一个新的.phtml文件“featured products.phtml”,用于调用项目(摘自我不久前找到的某人的示例)。然后我刚刚创建了一个新的静态块来调用这个模板文件,然后将这个静态块添加到我的主页中。太好了,你实际上在
特色产品中放了什么。phtml
?好的,编辑了我的问题以包含phtml代码。让我知道如果您需要查看我的静态块代码(php中的新代码),那么这是否就是我在“Mage\u Catalog\u block\u Product\u new”之前识别的相同块?我可以在不破解核心块的情况下更改计数吗?我真的希望这是一个简单的更改,允许以后轻松更新核心…我发现有一个线程有人试图通过XML布局更新来更改此计数,但我无法让它工作。。。也许我做错了?这可以将我的显示限制在2,但是如果我使用“products_count=“10”,它仍然只显示5…?如果我在new.php中将const定义为“10”,那么它当然可以工作,但我不应该弄乱这个文件,因为当我继续更新magento时,它会被覆盖,不是吗?(请原谅,对于php和magento核心文件,我是个新手)。我的新.php文件中没有这一行(1.7版?)但是感谢const DEFAULT\u PRODUCTS\u COUNT=5;将其更改为const DEFAULT\u PRODUCTS\u COUNT=10;这是在\app\code\core\Mage\Catalog\Block\Product\New.php中定义的。这不是可接受的方法,但将是一种快速修复的方法。还有公共函数setProductsCount($COUNT)。因此在.phtml中尝试这个($this->setProductsCount(10))在这行代码之前,嘿,这行代码奏效了!谢谢!-所以,我遵循了你最近的建议,把它放在我的phtml文件中,然后在我的静态块中的{block…}中使用products_count=“10”行,在那里我调用了我的phtml文件,效果很好-无需破解new.php。谢谢!