How To Create a Featured Product in Magento

Topics focus on Web Developments, Programming, Database, Digital Marketing Tutorials, Code Snippets, SEO, Social Media Marketing and Inspirational articles.

How To Create a Featured Product in Magento

How To Create a Featured Product in Magento

We are going to write about How To Create a Featured Product in Magento store. 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.

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.

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

We are 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 are 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
2
3
4
5
6
7
8
9
<?php
    class MyCompany_Catalog_Block_Category_View extends Mage_Catalog_Block_Category_View
    {
        public function getFeaturedProductHtml()
        {
            return $this->getBlockHtml('product_featured');
        }
    }
?>

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
2
3
 
<?php $_product=$this->getFeaturedProduct() ?>
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
2
3
4
5
6
7
8
9
10
    <blocks>
        <catalog>
            <rewrite>
                <product_featured>MyCompany_Catalog_Block_Product_Featured</product_featured>
           </rewrite>
            <rewrite>
                <category_view>MyCompany_Catalog_Block_Category_View</category_view>
            </rewrite>
         </catalog>
    </blocks>

How do you modifying the httpd.config file, .htaccess files, and domain settings.

Add comment


 

Pin It on Pinterest

Share This