http://www.magentocommerce.com/magento-connect/top-seller-new-feature-most-viewed-catalog-sale-recently-ordered-all-products-7-in-one-catalog-by-etatvasoft.html
app\code\local\Tatva\Catalogextensions\Block\Bestsellers\List.php
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
* Description of List
*
* @author om
*/
class Tatva_Catalogextensions_Block_Bestsellers_List extends Mage_Catalog_Block_Product_List
{
/**
* Initialize block's cache
*/
protected function _construct()
{
parent::_construct();
$this->addColumnCountLayoutDepend('empty', 6)
->addColumnCountLayoutDepend('one_column', 4)
->addColumnCountLayoutDepend('two_columns_left', 3)
->addColumnCountLayoutDepend('two_columns_right', 3)
->addColumnCountLayoutDepend('three_columns', 3);
// $this->addData(array(
// 'cache_lifetime' => 86400,
// 'cache_tags' => array(Mage_Catalog_Model_Product::CACHE_TAG),
// ));
}
protected function _getProductCollection()
{
parent::__construct();
$storeId = Mage::app()->getStore()->getId();
$products = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addOrderedQty()
->setStoreId($storeId)
->addStoreFilter($storeId)
//->setOrder('ordered_qty', 'desc')
->setPageSize($this->get_prod_count())
->setOrder($this->get_order(), $this->get_order_dir())
->setCurPage($this->get_cur_page());
$productFlatData = Mage::getStoreConfig('catalog/frontend/flat_catalog_product');
if($productFlatData == "1")
{
$products->getSelect()->joinLeft(
array('flat' => 'catalog_product_flat_'.$storeId),
"(e.entity_id = flat.entity_id ) ",
//array(
// 'flat.name AS name','flat.image AS small_image','flat.price AS price','flat.minimal_price as minimal_price','flat.special_price as special_price','flat.special_from_date AS special_from_date','flat.special_to_date AS special_to_date'
// )
array(
'flat.name AS name','flat.small_image AS small_image','flat.price AS price','flat.special_price as special_price','flat.special_from_date AS special_from_date','flat.special_to_date AS special_to_date'
)
);
}
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products);
$this->_productCollection = $products;
return $this->_productCollection;
}
function get_prod_count()
{
//unset any saved limits
Mage::getSingleton('catalog/session')->unsLimitPage();
return (isset($_REQUEST['limit'])) ? intval($_REQUEST['limit']) : 9;
}// get_prod_count
function get_cur_page()
{
return (isset($_REQUEST['p'])) ? intval($_REQUEST['p']) : 1;
}// get_cur_page
function get_order()
{
return (isset($_REQUEST['order'])) ? ($_REQUEST['order']) : 'ordered_qty';
}// get_order
function get_order_dir()
{
return (isset($_REQUEST['dir'])) ? ($_REQUEST['dir']) : 'desc';
}// get_direction
}
?>
app\design\frontend\default\theme508\template\catalog\product\list.phtml
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE_AFL.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category design
* @package base_default
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
?>
<?php
/**
* Product list template
*
* @see Mage_Catalog_Block_Product_List
*/
?>
<?php
$_productCollection=$this->getLoadedProductCollection();
$_helper = $this->helper('catalog/output');
$_category = $this->getCurrentCategory();
?>
<?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() ?>
<?php // 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; ?>">
<?php // Product Image ?>
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(210, 300); ?>" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
<?php // Product description ?>
<div class="product-shop">
<div class="f-fix">
<?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>
<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>
<?php echo $this->getPriceHtml($_product, true) ?>
<?php if($_product->getRatingSummary()): ?>
<?php echo $this->getReviewsSummaryHtml($_product) ?>
<?php endif; ?>
<?php if($_product->isSaleable()): ?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" οnclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
<?php else: ?>
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
<?php endif; ?>
<div class="clear"></div>
<ul class="add-to-links">
<?php if ($this->helper('wishlist')->isAllow()) : ?>
<li><a title="<?php echo $this->__('Add to Wishlist') ?>" href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist tooltips"><?php echo $this->__('Add to Wishlist') ?></a></li>
<?php endif; ?>
<?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
<li><span class="separator">|</span> <a title="<?php echo $this->__('Add to Compare') ?>" href="<?php echo $_compareUrl ?>" class="link-compare tooltips"><?php echo $this->__('Add to Compare') ?></a></li>
<?php endif; ?>
</ul>
</div>
</div>
<div class="clear"></div>
</li>
<?php endforeach; ?>
</ol>
<script type="text/javascript">decorateList('products-list', 'none-recursive')</script>
<?php else: ?>
<?php // Grid Mode ?>
<?php $_collectionSize = $_productCollection->count() ?>
<?php $_columnCount = $this->getColumnCount(); ?>
<?php $i=0; foreach ($_productCollection as $_product): ?>
<?php if ($i++%$_columnCount==0): ?>
<ul class="products-grid row">
<?php endif ?>
<li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?> span3">
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image">
<!--图片翻滚开始-->
<?php $_productx = Mage::getModel('catalog/product')->load($_product->getId()); ?>
<?php $img_count = count($_productx->getMediaGalleryImages());?>
<?php $j = 0;?>
<?php if($img_count>1): ?>
<?php foreach ($_productx->getMediaGalleryImages() as $_image): ?>
<?php $j ++;?>
<?php if($j == 2):?>
<img οnmοuseοver="this.src='<?php echo $this->helper('catalog/image')->init($_productx, 'small_image', $_image->getFile())->resize(268, 402);?>';" οnmοuseοut="this.src='<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(268, 402); ?>';" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(268, 402); ?>" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
<?php endif ?>
<?php endforeach ?>
<?php else: ?>
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(268, 402); ?>" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
<?php endif ?>
<!--图片翻滚结束-->
</a>
<!--优惠贴片开始-->
<?php $cost = $_product->getResource()->getAttribute('cost')->getFrontend()->getValue($_product);
$price = $_product->getResource()->getAttribute('price')->getFrontend()->getValue($_product);
$saleoff = ($cost - $price) / $cost;
$saleoff = number_format($saleoff, 2, '.', '');
$saleoff = intval($saleoff*100);
?><div class="sale<?php echo $saleoff;?>off"></div>
<!-- 优惠贴片结束-->
<div class="product-shop">
<div class="product-shop-indent">
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
<?php if($_product->getRatingSummary()): ?>
<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
<?php endif; ?>
<?php echo $this->getPriceHtml($_product, true) ?>
<?php if($_product->isSaleable()): ?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" οnclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
<?php else: ?>
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
<?php endif; ?>
</div>
<div class="actions">
<ul class="add-to-links">
<?php if ($this->helper('wishlist')->isAllow()) : ?>
<li><a title="<?php echo $this->__('Add to Wishlist') ?>" href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" rel="tooltip" 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 title="<?php echo $this->__('Add to Compare') ?> " href="<?php echo $_compareUrl ?>" rel="tooltip" class="link-compare "><?php echo $this->__('Add to Compare') ?></a></li>
<?php endif; ?>
</ul>
</div>
</div>
</li>
<?php if ($i%$_columnCount==0 || $i==$_collectionSize): ?>
</ul>
<?php endif ?>
<?php endforeach ?>
<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; ?>
改变首页每行的个数
app/code/local/Tatva/Catalogextensions/Block/Bestsellers/List.php 增加以下代码
/**
* Initialize block's cache
*/
protected function _construct()
{
parent::_construct();
$this->addColumnCountLayoutDepend('empty', 6)
->addColumnCountLayoutDepend('one_column', 4)
->addColumnCountLayoutDepend('two_columns_left', 3)
->addColumnCountLayoutDepend('two_columns_right', 3)
->addColumnCountLayoutDepend('three_columns', 3);
// $this->addData(array(
// 'cache_lifetime' => 86400,
// 'cache_tags' => array(Mage_Catalog_Model_Product::CACHE_TAG),
// ));
}
模板文件编辑
app/design/frontend/default/default/template/catalogextensions/home_mostviewed.phtmlapp/design/frontend/default/default/template/catalogextensions/home_featured.phtml
app/design/frontend/default/default/template/catalogextensions/home_lastordered.phtml
app/design/frontend/default/default/template/catalogextensions/home_newproduct.phtml
app/design/frontend/default/default/template/catalogextensions/home_promotional.phtml
app/design/frontend/default/default/template/catalogextensions/home_bestsellers.phtml
要在首页显示,在首页的cms文件的layout文件中加入
<block type="catalogextensions/bestsellers_home_list" name="bestsellers_list" alias="bestsellers_home_list" after="cms.wrapper" template="catalogextensions/home_bestsellers.phtml">
<action method="setColumnCount"><columns>3</columns></action>
<action method="setProductsCount"><count>6</count></action>
<action method="addPriceBlockType"><type>bundle</type><block>bundle/catalog_product_price</block><template>bundle/catalog/product/price.phtml</template></action>
</block>
<block type="catalogextensions/mostviewed_home_list" name="mostviewed_list" alias="mostviewed_home_list" after="bestsellers_list" template="catalogextensions/home_mostviewed.phtml">
<action method="setColumnCount"><columns>3</columns></action>
<action method="setProductsCount"><count>6</count></action>
<action method="addPriceBlockType"><type>bundle</type><block>bundle/catalog_product_price</block><template>bundle/catalog/product/price.phtml</template></action>
</block>