これは、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
は、製品コレクションを取得してから、繰り返しの上部にあるSubsurfのコードを使用しforeach()
ます。
$_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()
しているため、何もしませんでした。セットがあれば、getがあるかもしれないと推測したので$_product=$this->getProduct()
、テンプレートがprice.phtml
正しく機能するために必要な魔法もありました。Mage::
次に、 inをにsetProduct()
直接割り当てることができることに気付きました$_product
。
ありがとう、サブサーフ!!!