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