How To Create a Featured Product

Last modified by shamim3gb on Sun, September 2, 2012 11:57
Source|Old Revisions  

This is an old revision of the document!


This tutorial will show you how to implement a Featured Product feature. The Featured Product is a product with an attribute added from the administrative UI. When the administrator selects “Yes” in the “Featured” attribute, that product will be displayed in a content block on the category page.

I’ll explain each step I took to make this custom feature. Please forgive me if I left anything out.

Note: For me the featured product only showed up if the category was not an anchor.


Step 1) Create new "Featured" attribute

Create a new attribute by going to Catalog > Attributes > Manage Attributes > Add New Attribute.

Attribute Properties

  • Attribute Identifier: featured
  • Scope: Store View
  • Catalog Input Type for Store Owner: Yes/No
  • Unique Value (not shared with other products): No
  • Values Required: No
  • Input Validation for Store Owner: None
  • Apply To: All Product Types

Front End Properties

  • Use in quick search: No
  • Use in advanced search: Yes
  • Comparable on Front-end: No
  • Use In Layered Navigation (Can be used only with catalog input type ‘Dropdown’): No
  • Visible on Catalog Pages on Front-end: Yes

Manage Label/Options

  • Default: Featured Product
  • English: Featured Product

Save the new attribute and go to Catalog → Attributes → Manage Attributes Sets to add the attribute to the default feature set.


Watch Deutsche Bank Championship 2012 Golf Live Streaming on Mobile/Laptop/Pc

Hello Golf Fans, You are most welcome to watch Deutsche Bank Championship Golf 2012 Live online HD TV On your Laptop/PC/Mac/iPhone/iPad/tablet. We provide Deutsche Bank Championship 2012 golf Live telecast here this site. So don`t miss this hot moment of Deutsche Bank Championship Golf 2012 live online now. So Dear Friend Don’t late, Click below and get live access now. Here You can watch Deutsche Bank Championship Golf 2012 With Unlimited Sports such as,Golf, Rugby, NFL, NCAA, Boxing, UFC, Racing, AFL, CFL, GAA, Soccer, , Baseball, Movie, TV Show and other program Such like as channel ESPN, CBSS, BTN, FSN, ESPU, ESGP, ACCN, TMTN, VERS, FCS, FX Ten Sports, MSN, NBC, CBS, addhe.net, Sports Yahoo, USA Today, Bwin, TNT, BBC HD, ESPN2, ESPN3, justin.TV, ustream, Sky 3D, Sky Sports 2, Fox Sports, Fox spots in USA, Fox Sports in UK, Australian TV channel,Canada with all over the world. Click below for live now

Click below for live watch

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

Watch Deutsche Bank Championship 2012 Golf Live Streaming on Mobile/Laptop/Pc

Hello Golf Fans, You are most welcome to watch Deutsche Bank Championship Golf 2012 Live online HD TV On your Laptop/PC/Mac/iPhone/iPad/tablet. We provide Deutsche Bank Championship 2012 golf Live telecast here this site. So don`t miss this hot moment of Deutsche Bank Championship Golf 2012 live online now. So Dear Friend Don’t late, Click below and get live access now. Here You can watch Deutsche Bank Championship Golf 2012 With Unlimited Sports such as,Golf, Rugby, NFL, NCAA, Boxing, UFC, Racing, AFL, CFL, GAA, Soccer, , Baseball, Movie, TV Show and other program Such like as channel ESPN, CBSS, BTN, FSN, ESPU, ESGP, ACCN, TMTN, VERS, FCS, FX Ten Sports, MSN, NBC, CBS, addhe.net, Sports Yahoo, USA Today, Bwin, TNT, BBC HD, ESPN2, ESPN3, justin.TV, ustream, Sky 3D, Sky Sports 2, Fox Sports, Fox spots in USA, Fox Sports in UK, Australian TV channel,Canada with all over the world. Click below for live now

Click below for live watch

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

http://livetelecast.us/golf.htm

Step 3) Create new block class that will instantiate the featured product

Create a new file, and directories: app/code/local/MyCompany/Catalog/Block/Product/Featured.php

  1. <?php
  2. class MyCompany_Catalog_Block_Product_Featured extends Mage_Catalog_Block_Product_Abstract
  3.       {
  4.           public function getFeaturedProduct()
  5.           {
  6.  
  7.               // instantiate database connection object
  8.               $storeId = Mage::app()->getStore()->getId();   
  9.               $categoryId = $this->getRequest()->getParam('id', false);
  10.               $resource = Mage::getSingleton('core/resource');
  11.               $read = $resource->getConnection('catalog_read');
  12.               $categoryProductTable = $resource->getTableName('catalog/category_product');
  13.               //$productEntityIntTable = $resource->getTableName('catalog/product_entity_int'); // doesn't work :(
  14.               $productEntityIntTable = (string)Mage::getConfig()->getTablePrefix() . 'catalog_product_entity_int';
  15.               $eavAttributeTable = $resource->getTableName('eav/attribute');
  16.               // Query database for featured product
  17.               if ($categoryId){
  18.               $select = $read->select()
  19.                              ->from(array('cp'=>$categoryProductTable))
  20.                              ->join(array('pei'=>$productEntityIntTable), 'pei.entity_id=cp.product_id', array())
  21.                              ->joinNatural(array('ea'=>$eavAttributeTable))
  22.                              ->where('cp.category_id=?', $categoryId)
  23.                              ->where('pei.value=1')
  24.                              ->where('ea.attribute_code="featured"');}
  25.                 else {
  26.                
  27.                   $select = $read->select()
  28.                              ->from(array('cp'=>$categoryProductTable))
  29.                              ->join(array('pei'=>$productEntityIntTable), 'pei.entity_id=cp.product_id', array())
  30.                              ->joinNatural(array('ea'=>$eavAttributeTable))
  31.                              ->where('pei.value=1')
  32.                              ->where('ea.attribute_code="featured"');
  33.                 }
  34.              $featuredProductData = $read->fetchAll($select);
  35.              $i=0;
  36.              $product=array();
  37.              $productid=array();
  38.              foreach ($featuredProductData as $row) {
  39.            
  40.                 // instantiate the product object
  41.                 //$productid[$i] = Mage::getModel('catalog/product')->load($row['product_id']);
  42.                 $productid[$i] = $row['product_id'];
  43.            
  44.                 // if the product is a featured product, return the object
  45.                 // if ($product->getData('featured')) {
  46.                
  47.                 //}
  48.                 $i++;
  49.             }
  50.         $productid=array_unique($productid);
  51.         $i=0;
  52.         foreach($productid as $id){
  53.             $product[$i] = Mage::getModel('catalog/product')->load($id);
  54.             $i++;
  55.         }
  56.         return $product;
  57.         }
  58. }
  59. ?>

We’re almost there!


Step 4) Extend Mage_Catalog_Block_Category_View

Create a new file, and directories, called app/code/local/MyCompany/Catalog/Block/Category/View.php. We’re extending the core class here so our module will be separate from the core code base. When upgrading, we won’t have to worry about our code not working or having to patch files.

  1. <?php
  2.     class MyCompany_Catalog_Block_Category_View extends Mage_Catalog_Block_Category_View
  3.     {
  4.         public function getFeaturedProductHtml()
  5.         {
  6.             return $this->getBlockHtml('product_featured');
  7.         }
  8.     }
  9. ?>

Step 5) Modify the templates

Edit app/design/frontend/default/default/template/catalog/category/view.phtml and add the following code:

  1.     <?=$this->getFeaturedProductHtml()?>

right above this line:

  1.     <?=$this->getProductListHtml()?>

Create app/design/frontend/default/default/template/catalog/product/featured.phtml and add some product info HTML to show the featured product. Here is an example that simply displays a link to the product:

  1. <?php $_product=$this->getFeaturedProduct() ?>
  2. Check this out: <a href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a>

Step 6) Add new blocks to the app/etc/local.xml

Add the following inside the config global tag:

  1.     <blocks>
  2.         <catalog>
  3.             <rewrite>
  4.                 <product_featured>MyCompany_Catalog_Block_Product_Featured</product_featured>
  5.            </rewrite>
  6.             <rewrite>
  7.                 <category_view>MyCompany_Catalog_Block_Category_View</category_view>
  8.             </rewrite>
  9.          </catalog>
  10.     </blocks>

I hope this helps you add a “Featured Product” feature. It certainly feels thorough, but if I left anything out, please let me know and I’ll be happy to help.

Thanks,

Andy




 

Magento 2 GitHub Repository

Magento Job Board - Some sort of tag line goes here

Latest Posts| View all Jobs