Magento - загрузить коллекцию товаров с разбивкой на страницы

Я пытаюсь загрузить коллекцию продуктов, а затем отфильтровать ее, вызвав идентификаторы проверки в массив, а затем применив к ней этот фильтр.

Я приложил код ниже, который находится в верхней части List.phtml, что я запускаю его через пользовательскую копию list.phtml, например,

Хорошей новостью является то, что коллекция будет загружаться, но она разбивает разбиение на страницы. Если у кого-то есть идеи, которые были бы замечательными.

Полный код ниже.

Любая помощь очень ценится.

<!--?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');
?>
1 ответ

Чтобы отобразить разбивку на страницы, вы можете добавить панель инструментов в виде списка. Я сделал это здесь для брендов, коллекцию по категориям. Вы можете изменить этот код в соответствии с вашей коллекцией.

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 ***************()
{
 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;
} 
}

licensed under cc by-sa 3.0 with attribution.