这不像是对 Subsurf 答案的大型 HTML 评论那样的答案。如果您正在阅读本文,您可能正在实现自己的自定义模块来显示产品列表。在我的例子中,它是一个专供批发商使用的页面。我的目标是获得我自己公司产品的列表,并给他们一个列表,就像它是另一个类别一样。我将模板复制list.phtml
到新的content.phtml
. 但是getMinimalPrice()
正在返回NULL
,这意味着当此代码调用 时getPriceHtml()
,price.phtml
没有显示批发价格。
我用索引控制器和 content.phtml 做了一个简单的模块。使用我在网上看到的样板文件,在indexController.php
文件中更改:
$block = $this->getLayout()->createBlock(
'Mage_Core_Block_Template',
'b2b',
array('template' => 'b2b/content.phtml')
);
到:
$block = $this->getLayout()->createBlock(
'Mage_Catalog_Block_Product_List',
'b2b',
array('template' => 'b2b/content.phtml')
);
这为您正确显示产品列表做了很多繁重的工作。
现在,在模板文件上,在我的例子content.phtml
中,你得到你的产品集合,然后在foreach()
重复的顶部使用 Subsurf 的代码。
$_productCollection = Mage::getModel('catalog/product')
->getCollection()
// ->addAttributeToSelect('*')
// doesn't work ->addAttributeToSelect('special_price')
->addAttributeToSelect('sku')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
// http://stackoverflow.com/questions/1332742/magento-retrieve-products-with-a-specific-attribute-value
->addFieldToFilter( array(
array('attribute'=>'manufacturer','eq'=>'143')
, array('attribute'=>'manufacturer','eq'=>'139')
))
;
echo "<p>There are ".count($_productCollection)." products: </p>";
echo '<div class="category-products">';
// List mode
if($this->getMode()!='grid') {
$_iterator = 0;
echo'<ol class="products-list" id="products-list">';
foreach ($_productCollection as $_product) {
?> <li class="item<?php if( ++$_iterator == sizeof($_productCollection) ): ?> last<?php endif; ?>">
<?php
$_product=Mage::getModel("catalog/product")->getCollection()
->addAttributeToSelect(Mage::getSingleton("catalog/config")->getProductAttributes())
->addAttributeToFilter("entity_id", $_product->getId())
->setPage(1, 1)
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents()
->load()
->getFirstItem()
);
echo "Minimal price: ".$_product->getMinimalPrice()."<br>\n";
由于这不是单个产品的页面,而且我正在使用其他模板代码,$this->setProduct()
因此没有为我做任何事情。我猜如果有一套,可能会有一个得到,所以$_product=$this->getProduct()
我的模板需要的魔法price.phtml
才能正常工作。然后我注意到我可以直接将Mage::
in分配setProduct()
给$_product
.
谢谢,子冲浪!!!