2011-10-26 2 views
2

제품 컬렉션을로드 한 다음 검토 ID를 배열로 호출 한 다음 해당 필터를 적용하여 필터링하려고했습니다.Magento - 페이지 매김을 사용하여 제품 컬렉션로드

나는 것입니다 내가 그렇게

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

좋은 소식처럼 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'); 
?> 

답변

0

페이지 뷰를 표시하려면 목록보기에서 도구 모음을 추가하십시오. 브랜드별로 분류 기준으로 수집했습니다. 컬렉션에 맞게이 코드를 수정할 수 있습니다.

class Mage_Catalog_Block_Product_Brandsnew extends Mage_Catalog_Block_Product_Abstract 
{ 
protected $_productsCount = null; 

const DEFAULT_PRODUCTS_COUNT = 5; 

/** 
* Initialize block's 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; 
} 

} 
관련 문제