Magento - Download Paginated Product Collection

I am trying to load a collection of products and then filter it by calling validation identifiers in an array and then applying this filter to it.

I have attached the code below, which is at the top of List.phtml, that I run it through a custom copy of list.phtml, for example,

<block type="catalog/product_list" name="sale" template="reviewsList/index.phtml"> 

The good news is that the collection will load, but it breaks the pagination. If anyone has ideas that would be great.

Full code below.

Any help is greatly appreciated.

 <?php $reviewCollection = Mage::getModel('review/review')->getCollection()->addStoreFilter(Mage::app()->getStore()->getId())->addRateVotes()->setDateOrder(); $reviewArray = array(); foreach ($reviewCollection->getItems() as $thisReview): array_push($reviewArray, $thisReview->getEntityPkValue()); endforeach; $_productCollection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('entity_id', array('in' => $reviewArray))->addAttributeToSelect('*')->setPageSize(5); $_productCollection = $_productCollection->load(); //$_productCollection=$this->getLoadedProductCollection(); $_helper = $this->helper('catalog/output'); ?> 
+2
source share
1 answer

To display pagination, you can add a toolbar as a list. I did it here for brands, a collection by category. You can change this code to suit your collection.

 class Mage_Catalog_Block_Product_Brandsnew extends Mage_Catalog_Block_Product_Abstract { protected $_productsCount = null; const DEFAULT_PRODUCTS_COUNT = 5; /** * Initialize block cache */ protected function _construct() { parent::_construct(); $this->addColumnCountLayoutDepend('empty', 6) ->addColumnCountLayoutDepend('one_column', 5) ->addColumnCountLayoutDepend('two_columns_left', 4) ->addColumnCountLayoutDepend('two_columns_right', 4) ->addColumnCountLayoutDepend('three_columns', 3); $this->addData(array( 'cache_lifetime' => 86400, 'cache_tags' => array(Mage_Catalog_Model_Product::CACHE_TAG), )); } /** * Get Key pieces for caching block content * * @return array */ public function getCacheKeyInfo() { return array( 'CATALOG_PRODUCT_NEW', Mage::app()->getStore()->getId(), Mage::getDesign()->getPackageName(), Mage::getDesign()->getTheme('template'), Mage::getSingleton('customer/session')->getCustomerGroupId(), 'template' => $this->getTemplate(), $this->getProductsCount() ); } /** * Prepare collection with new products and applied page limits. * * return Mage_Catalog_Block_Product_New */ protected function _beforeToHtml() { $toolbar = $this->getToolbarBlock(); //$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT); $collection = Mage::getResourceModel('catalog/product_collection') ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()) ->addMinimalPrice() ->addStoreFilter() ->addAttributeToFilter('manufacturer',$this->getRequest()->manufacturer); Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection); Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection); //$collection->addAttributeToFilter('special_price' ,array('neq' => '')); // use sortable parameters if ($orders = $this->getAvailableOrders()) { $toolbar->setAvailableOrders($orders); } if ($sort = $this->getSortBy()) { $toolbar->setDefaultOrder($sort); } if (isset($_GET['p'])) { $toolbar->setLimit($toolbar->getLimit()); } $this->setProductCollection($collection); $toolbar->setCollection($collection); $this->setChild('toolbar', $toolbar); Mage::dispatchEvent('catalog_block_product_list_collection', array( 'collection'=>$collection, )); $collection->load(); return parent::_beforeToHtml(); } /** * Set how much product should be displayed at once. * * @param $count * @return Mage_Catalog_Block_Product_New */ public function setProductsCount($count) { $this->_productsCount = $count; return $this; } /** * Get how much products should be displayed at once. * * @return int */ public function getProductsCount() { if (null === $this->_productsCount) { $this->_productsCount = self::DEFAULT_PRODUCTS_COUNT; } return $this->_productsCount; } /** * Retrieve Toolbar block * * @return Mage_Catalog_Block_Product_List_Toolbar */ public function getToolbarBlock() { if ($blockName = $this->getToolbarBlockName()) { if ($block = $this->getLayout()->getBlock($blockName)) { return $block; } } $block = $this->getLayout()->createBlock($this->_defaultToolbarBlock, microtime()); return $block; } public function setCollection($collection) { $this->_productCollection = $collection; return $this; } } 
0
source

Source: https://habr.com/ru/post/1482926/


All Articles