@minesh-patel, after trying several times I finally get a code like this:
(without override / rewrite)
//Category and Limit Page
<?php
$cat = Mage::app()->getRequest()->getParam('cat');
$_category = Mage::registry('current_category');
if($cat == '')
$currentCategoryId = $_category->getId();
else
$currentCategoryId = $cat;
$limit = Mage::getSingleton('catalog/session')->getLimitPage();
if($limit == ""){
$limit = Mage::getStoreConfig('catalog/frontend/grid_per_page');
}
?>
<!-- No Product -->
<?php if(!$_productCollection->count()): ?>
<p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
<?php else: ?>
<div class="category-products">
<?php echo $this->getToolbarHtml();
$current_page = Mage::getBlockSingleton('page/html_pager')->getCurrentPage();
?>
//layered navigation handling by attribute
$price = Mage::app()->getRequest()->getParam('price');
$class = Mage::app()->getRequest()->getParam('class');
$silos = Mage::app()->getRequest()->getParam('silos');
if($price != ''){
$arr_price = explode('-',$price);
if($arr_price[1] == '')
$_productCollection->addAttributeToFilter('price',array('from'=> $arr_price[0]));
else
$_productCollection->addAttributeToFilter('price',array('from'=> $arr_price[0], 'to' => $arr_price[1]));
}
if($class != ''){
//$_productCollection->addAttributeToSelect('class');
$_productCollection->addAttributeToFilter('class', $class);
}
if($silos != ''){
$_productCollection->addAttributeToFilter('silos', $silos);
}
}
if($limit != 'all'){
$_productCollection->setPageSize($limit)->setCurPage($current_page);
}
here the full code :
<?php
/**
* Product list template
*
* @see Mage_Catalog_Block_Product_List
*/
/* @var $this Mage_Catalog_Block_Product_List */
?>
<?php
$cat = Mage::app()->getRequest()->getParam('cat');
$_productCollection=$this->getLoadedProductCollection();
$_category = Mage::registry('current_category');
if($cat == '')
$currentCategoryId = $_category->getId();
else
$currentCategoryId = $cat;
$limit = Mage::getSingleton('catalog/session')->getLimitPage();
if($limit == ""){
$limit = Mage::getStoreConfig('catalog/frontend/grid_per_page');
}
?>
<!-- No Product -->
<?php if(!$_productCollection->count()): ?>
<p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
<?php else: ?>
<div class="category-products">
<?php echo $this->getToolbarHtml();
$current_page = Mage::getBlockSingleton('page/html_pager')->getCurrentPage();
?>
<?php
if($currentCategoryId){
$order = Mage::getSingleton('catalog/session')->getSortOrder();
$direction = Mage::getSingleton('catalog/session')->getSortDirection();
$display = Mage::getSingleton('catalog/session')->getDisplayMode();
if($order == 'name') {
if($direction == '') {
$direction = 'asc';
}
$_productCollection = Mage::getModel('catalog/category')->load($currentCategoryId)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
->setOrder('name', $direction);
}
if($order == 'price') {
if($direction == '') {
$direction = 'asc';
}
$_productCollection = Mage::getModel('catalog/category')->load($currentCategoryId)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
->setOrder('price', $direction);
}
if($order == 'position') {
if($direction == '') {
$direction = 'asc';
}
$_productCollection = Mage::getModel('catalog/category')->load($currentCategoryId)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
->setOrder('position', $direction);
}
if($order == '') {
if($direction == '') {
$direction = 'asc';
}
$_productCollection = Mage::getModel('catalog/category')->load($currentCategoryId)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
->setOrder('news_from_date', 'desc')
->setOrder('created_at', 'desc');
}
//layered navigation handling
//price
$price = Mage::app()->getRequest()->getParam('price');
$class = Mage::app()->getRequest()->getParam('class');
$silos = Mage::app()->getRequest()->getParam('silos');
if($price != ''){
$arr_price = explode('-',$price);
if($arr_price[1] == '')
$_productCollection->addAttributeToFilter('price',array('from'=> $arr_price[0]));
else
$_productCollection->addAttributeToFilter('price',array('from'=> $arr_price[0], 'to' => $arr_price[1]));
}
if($class != ''){
$_productCollection->addAttributeToFilter('class', $class);
}
if($silos != ''){
$_productCollection->addAttributeToFilter('silos', $silos);
}
}
if($limit != 'all'){
$_productCollection->setPageSize($limit)->setCurPage($current_page);
}
?>
<!-- List mode -->
<?php if($this->getMode()!='grid'): ?>
<?php $_iterator = 0; ?>
<ol class="products-list" id="products-list">
<?php foreach ($_productCollection as $_product): ?>
<li class="item<?php if( ++$_iterator == sizeof($_productCollection) ): ?> last<?php endif; ?>">
<!-- Product Image -- >
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image">
<?php $_imgSize = 300; ?>
<img id="product-collection-image-<?php echo $_product->getId(); ?>"
src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->keepFrame(false)->resize($_imgSize); ?>"
alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
</a>
<!-- Product description -->
<div class="product-shop">
<div class="f-fix">
<div class="product-primary">
<?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product, $_product->getName() , 'name'); ?></a></h2>
<?php if($_product->getRatingSummary()): ?>
<?php echo $this->getReviewsSummaryHtml($_product) ?>
<?php endif; ?>
<?php
if ($this->getChild('name.after')) {
$_nameAfterChildren = $this->getChild('name.after')->getSortedChildren();
foreach ($_nameAfterChildren as $_nameAfterChildName) {
$_nameAfterChild = $this->getChild('name.after')->getChild($_nameAfterChildName);
$_nameAfterChild->setProduct($_product);
echo $_nameAfterChild->toHtml();
}
}
?>
</div>
<div class="product-secondary">
<?php echo $this->getPriceHtml($_product, true) ?>
</div>
<div class="product-secondary">
<?php if(!$_product->canConfigure() && $_product->isSaleable()): ?>
<p class="action"><button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button></p>
<?php elseif($_product->getStockItem() && $_product->getStockItem()->getIsInStock()): ?>
<p class="action"><a title="<?php echo $this->__('View Details') ?>" class="button" href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->__('View Details') ?></a></p>
<?php else: ?>
<p class="action availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
<?php endif; ?>
<ul class="add-to-links">
<?php if ($this->helper('wishlist')->isAllow()) : ?>
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
<?php endif; ?>
<?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
<?php endif; ?>
</ul>
</div>
<div class="desc std">
<?php echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?>
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More') ?></a>
</div>
</div>
</div>
</li>
<?php endforeach; ?>
</ol>
<script type="text/javascript">decorateList('products-list', 'none-recursive')</script>
<?php else: ?>
<!-- Grid Mode -->
<?php $_collectionSize = $_productCollection->count() ?>
<?php
//$_columnCount = $this->getColumnCount
$_columnCount = 4;
?>
<ul class="products-grid ali-grid products-grid--max-<?php echo $_columnCount; ?>-col">
<?php $i=0;
foreach ($_productCollection as $_product): ?>
<li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">
<div class="img-prod">
<?php
if($_product->getSpecialPrice()):
?>
<div class="embel-embel sale"><?php echo $this->__('Sale')?><span class="sale"></span></div>
<?php endif;?>
<?php
$date = date("Y-m-d 00:00:00");
$newtodate = $_product['news_to_date'];
$newfromdate = $_product['news_from_date'];
if (isset($newfromdate) and isset($newtodate) and $date >= $newfromdate and $date <= $newtodate) :
?>
<div class="embel-embel new"><?php echo $this->__('New')?><span class="new"></span></div>
<?php
elseif(isset($newfromdate)):
?>
<div class="embel-embel new"><?php echo $this->__('New')?><span class="new"></span></div>
<?php endif;?>
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image">
<?php $_imgSize = 210; ?>
<img id="product-collection-image-<?php echo $_product->getId(); ?>"
src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(238,317); ?>"
alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
</a>
</div>
<div class="product-info">
<div class="prod-title"><?php echo $this->helper('catalog/output')->productAttribute($_product, $_product->getName() , 'name') ?></div>
<h2 style="display:none" class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $this->helper('catalog/output')->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
<?php
?>
<?php echo $this->getPriceHtml($_product, true) ?>
<div class="actions" style="display:none">
<?php if(!$_product->canConfigure() && $_product->isSaleable()): ?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
<?php elseif($_product->getStockItem() && $_product->getStockItem()->getIsInStock()): ?>
<a title="<?php echo $this->__('View Details') ?>" class="button" href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->__('View Details') ?></a>
<?php else: ?>
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
<?php endif; ?>
<ul class="add-to-links">
<?php if ($this->helper('wishlist')->isAllow()) : ?>
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
<?php endif; ?>
<?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
<?php endif; ?>
</ul>
</div>
</div>
</li>
<?php endforeach ?>
</ul>
<script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
<?php endif; ?>
<div class="toolbar-bottom">
<?php echo $this->getToolbarHtml() ?>
</div>
</div>
<?php endif; ?>
<?php
// Provides a block where additional page components may be attached, primarily good for in-page JavaScript
if ($this->getChild('after')) {
$_afterChildren = $this->getChild('after')->getSortedChildren();
foreach ($_afterChildren as $_afterChildName) {
$_afterChild = $this->getChild('after')->getChild($_afterChildName);
//set product collection on after blocks
$_afterChild->setProductCollection($_productCollection);
echo $_afterChild->toHtml();
}
}
?>
or you can see it in here : http://pastebin.com/3bcAUSv2