cagartner
11/23/2015 - 5:39 PM

Criar listagem de produtos novos, mais visualizados e mais vendidos no magento

Criar listagem de produtos novos, mais visualizados e mais vendidos no magento

  1. Criar um arquivo chamado New.php no seguinte caminho: app/code/local/Mage/Catalog/Block/Product/New.php

2 ) Adicionar o seguinte código:

<?php
/**
 * Lista Produtos novos
 * @author Carlos Gartner <carlos@trezo.com.br>
 */
class Mage_Catalog_Block_Product_New extends Mage_Catalog_Block_Product_List
{
   /**
    * Retrieve loaded category collection
    *
    * @return Mage_Eav_Model_Entity_Collection_Abstract
   **/
   protected function _getProductCollection()
   {
      $todayDate  = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);

      $collection = Mage::getResourceModel('catalog/product_collection');
      $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());

      $collection = $this->_addProductAttributesAndPrices($collection)
         ->addStoreFilter()
         ->addAttributeToFilter('news_from_date', array('date' => true, 'to' => $todayDate))
         ->addAttributeToFilter('news_to_date', array('or'=> array(
            0 => array('date' => true, 'from' => $todayDate),
            1 => array('is' => new Zend_Db_Expr('null')))
         ), 'left')
         ->addAttributeToSort('news_from_date', 'desc')
         ->setPageSize($this->getTotal())
         ->setCurPage(1);

      $this->setProductCollection($collection);

      return $collection;
   }
}
  1. Criar o bloco estático:
<?php echo $this->getLayout()->createBlock('catalog/product_new')->setTotal('12')->setTemplate('home/tab-item.phtml')->toHtml(); ?>
  1. Criar um arquivo chamado Bestseller.php no seguinte caminho: app/code/local/Mage/Catalog/Block/Product/Bestseller.php

2 ) Adicionar o seguinte código:

<?php
/**
 * Lista Produtos Mais Vendidos
 * @author Carlos Gartner <carlos@trezo.com.br>
 */
class Mage_Catalog_Block_Product_Bestseller extends Mage_Catalog_Block_Product_List
{
    public function __construct() {
        parent::__construct();
        $storeId = Mage::app()->getStore()->getId();
        $products = Mage::getResourceModel('reports/product_collection')
            ->addOrderedQty()
            ->addAttributeToSelect('*')
            ->addAttributeToSelect(array('name', 'price', 'small_image'))
            ->setStoreId($storeId)
            ->addStoreFilter($storeId)
            ->setOrder('ordered_qty', 'desc'); // most best sellers on top
        Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
        Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);

        $products->setPageSize(3)->setCurPage(1);
        $this->setProductCollection($products);
    }

   /**
    * Retrieve loaded category collection
   **/
   protected function _getProductCollection()
   {
        return $this->getProductCollection();
   }
}
  1. Criar o bloco estático:
<?php echo $this->getLayout()->createBlock('catalog/product_bestseller')->setTotal('12')->setTemplate('home/tab-item.phtml')->toHtml(); ?>
  1. Criar um arquivo chamado Mostviewed.php no seguinte caminho: app/code/local/Mage/Catalog/Block/Product/Mostviewed.php

2 ) Adicionar o seguinte código:

<?php
/**
 * Lista Produtos Mais visualizados
 * @author Carlos Gartner <carlos@trezo.com.br>
 */
class Mage_Catalog_Block_Product_Mostviewed extends Mage_Catalog_Block_Product_List
{
    public function __construct() {
        parent::__construct();
        $storeId = Mage::app()->getStore()->getId();
        $products = Mage::getResourceModel('reports/product_collection')
            ->addOrderedQty()
            ->addAttributeToSelect('*')
            ->addAttributeToSelect(array('name', 'price', 'small_image'))
            ->setStoreId($storeId)
            ->addStoreFilter($storeId)
            ->addViewsCount();
        Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
        Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);

        $products->setPageSize($this->getTotal())->setCurPage(1);
        $this->setProductCollection($products);
    }

   /**
    * Retrieve loaded category collection
    *
    * @return Mage_Eav_Model_Entity_Collection_Abstract
   **/
   protected function _getProductCollection()
   {
        return $this->getProductCollection();
   }
}
  1. Criar o bloco estático:
<?php echo $this->getLayout()->createBlock('catalog/product_mostviewed')->setTotal('12')->setTemplate('home/tab-item.phtml')->toHtml(); ?>