:::: MENU ::::

Magento – Limiting featured products on homepage

The Problem

On a recent Magento project I wanted to create featured products on the home page but limit it to display only three.  I then wanted to include a “View More” link which would take you through to the rest of the featured products.  I also wanted to be able to specify which three featured products were to appear on the home page.

The Solution

1) I created a new category (hidden from navigation) called Featured Products and added all my featured products to this category

2) I then added a new  “yes/no” attribute called “Featured on Homepage” and added it to my default set

3) I Created a new template file called “featured-home” this included all my product attributes and structure I wanted to use. I used /template/catalogue/product/list.phtml as a guide but heavily edited it to my needs.

4) At the top of the document I added the following code which would filter those products marked as “Featured on Homepage”.

<?php
 // some helpers
 $_helper = $this->helper('catalog/output');
 $storeId = Mage::app()->getStore()->getId();
 $catalog = $this->getLayout()->createBlock('catalog/product_list')->setStoreId($storeId);
// get all products that are marked as featured
 $collection = Mage::getModel('catalog/product')->getCollection();
 $collection->addAttributeToSelect('featured');
 $collection->addFieldToFilter(array(
 array('attribute' => 'featured', 'eq' => true),
 ));
// if no products are currently featured, display some text
 if (!$collection->count()) :
 ?>
<p class="note-msg"><?php echo $this->__('There are no featured products at the moment.') ?></p>
<?php else : ?>

5) I edited my loop (that loops through my products) to read

<?php
   $i=0; foreach ($collection as $_product) :
   $_product = Mage::getModel('catalog/product')->setStoreId($storeId)->load($_product->getId());
   if ($i > 2) break;
 ?>

This limits the loop to display just 3 products.

6) I then added :

<?php $i++; ?>

Just before the end of my else statement. 

7) To display my products on my home page I went to CMS->PAGES->HOME inside Magento and added the following block into the design tab.
<reference name="content">
 <block type="core/template" name="home-featured" template="catalog/product/featured-home.phtml"/>
 </reference>

8) I could then add a link through to my featured products category from my featured-home.phtml so visitors can now see all the latest products.

Job done!


So, what do you think ?