0

So what i'm trying to achieve is that the product with the attribute 'promotion' set to 'yes' is displayed on the frontpage of the website. This is working, but the .phtml file i'am using with this is the regular list.phtml. This is currently showing all the items I have set to promotion but I only want to show 1.

So in short: How do I edit the list.phtml to only show 1 product instead of everything?

4

1 に答える 1

1

コレクションのプル方法を変更します。list.phtml のクローンを作成/名前を変更します (たとえば、promotion.phtml)。次に、この行を次のように変更します。

$_productCollection=$this->getLoadedProductCollection();

これに:

$_productCollection = Mage::getModel('catalog/product')
                        ->getCollection()
                        ->addAttributeToSelect('*')
                        ->addFieldToFilter('promotion', 1)
                        ->addAttributeToSort('updated_at', 'DESC')
                        ->clear()->setPageSize(1)->load();

また、プロモーションが yes に設定されたアイテムを 1 つだけロードする必要があります。追加するメソッドに応じて、CMS ページ コンテンツまたは XML のいずれかに新しいテンプレートを設定してください。

説明

  • Mage::getModel('catalog/product')->getCollection(): 製品コレクションを取得します。「カタログ/カテゴリ」や「cms/ページ」など、モデルを変更することで他のコレクションを取得できます。

  • ->addAttributeToSelect('*'): すべての製品列を追加します。などと交換できます('name', 'url')。すべてをロードするよりも速いと思いますが、ベンチマークはしていません。完全なテンプレートを使用しているため、この設定をすべてのままにしておくのがおそらく最善です。

  • ->addFieldToFilter('promotion', 1): 属性で商品を絞り込みます。ここでは、'promotion' 属性が 1 (yes/true) に設定されているすべての製品についてフィルタリングされています。製品はこれを使用しますが、カテゴリは->addAttributeToFilter()奇妙に使用します。Alan Storm のコレクションの説明 (下のリンク) を必ず読んで、これで何ができるかを確認してください。別の を追加するか->addFieldToFilter()、フィルターをネストされた配列に格納することにより、コレクションに複数のフィルターを追加できます。

  • ->addAttributeToSort('updated_at', 'DESC'): 製品コレクションを特定の属性と方向で並べ替えます。ここでは、「updated_at」の日付を降順に設定しています。「ASC」は昇順です。複数の並べ替え属性を追加できます。もちろん、追加する順序に注意してください。

  • ->clear()->setPageSize(1)->load(): これら 3 つは、コレクションのプル量を調整するために必要です。->clear()プルする製品の数を変更できるようにする前に、 を呼び出す必要があります。->setPageSize()ビットは、返品したい製品の数を指定する場所であり、->load()もちろんコレクションをロードします。返されるコレクションのサイズを制限しない場合、この行全体は必要ないことに注意してください。製品は を呼び出さなくても反復されます->load()

資力

Alan Storm の言葉を借りれば、これを読めば、コレクションを操作するプロになるはずです: http://alanstorm.com/magento_collections

于 2013-08-14T20:19:32.027 に答える