Пример #1
0
 function getListMostViewedProducts($perPage = NULL, $currentPage = 1)
 {
     /* 
     	Always set de $perPage, by template or by config 
     	if $perPage eq 0 (zero) not limit the list
     */
     if ($perPage === NULL) {
         $perPage = (int) $this->_config['qty'];
     }
     /*
     	Show all the product list in the current store			
     */
     $storeId = Mage::app()->getStore()->getStoreId();
     $this->setStoreId($storeId);
     $this->_productCollection = Mage::getResourceModel('reports/product_collection')->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())->addMinimalPrice()->addFinalPrice()->addTaxPercents()->addViewsCount()->setStoreId($storeId)->addStoreFilter($storeId)->setPageSize($perPage);
     if ($this->_config['catsid']) {
         $this->addCategoryIdsFilter($this->_productCollection);
     }
     Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_productCollection);
     Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this->_productCollection);
     $this->_productCollection->setPageSize($perPage)->setCurPage($currentPage);
     if (method_exists($this->_productCollection, "setMaxSize")) {
         $this->_productCollection->setMaxSize($perPage);
     }
     if ($this->_productCollection && $this->_productCollection->getSize()) {
         if (method_exists($this->_productCollection, "setMaxSize")) {
             $this->_productCollection->setMaxSize($perPage);
         }
     }
     return $this->_productCollection;
 }
 /**
  * Save an EAV collection, disabling the indexer if the collection is
  * larger than a configured size.
  *
  * @param Mage_Eav_Model_Entity_Collection_Abstract
  * @return self
  */
 public function saveCollectionStubIndexer(Mage_Eav_Model_Entity_Collection_Abstract $collection)
 {
     $config = $this->getConfigModel();
     $stubIndexer = $config->maxPartialReindexSkus < $collection->getSize();
     if ($stubIndexer) {
         // Stub the indexer so no indexing can take place during massive saves.
         $indexerKey = '_singleton/index/indexer';
         $oldIndexer = $this->reregister($indexerKey, $this->indexerStub);
     }
     $failureCount = 0;
     $logData = ['product_count' => $collection->getSize()];
     $logMessage = 'Saving {product_count} products with stubbed indexer.';
     $this->logger->info($logMessage, $this->context->getMetaData(__CLASS__, $logData));
     $failMessage = 'Failed to save product with sku {sku}.';
     foreach ($collection as $item) {
         try {
             $item->save();
         } catch (Exception $e) {
             $failureCount++;
             $failLogData = ['sku' => $item->getSku(), 'exception' => $e];
             $this->logger->logException($e, $this->context->getMetaData(__CLASS__, $failLogData))->error($failMessage, $this->context->getMetaData(__CLASS__, $failLogData));
         }
     }
     $logMessage = 'Finished saving {product_count} products with {failure_count} failures.';
     $logData['failure_count'] = $failureCount;
     $this->logger->info($logMessage, $this->context->getMetaData(__CLASS__, $logData));
     if ($stubIndexer) {
         $this->reregister($indexerKey, $oldIndexer);
     }
     return $this;
 }