2011-04-20 6 views
15

특정 제품의 관련 제품 목록을 보여주는 Magento (버전 1.8.0.0) 용 사용자 정의 모듈을 작업 해 왔습니다.사용자 정의 제품 컬렉션의 Magento 계층 형 네비게이션

이것을 달성하기 위해 나는 Mage_Catalog_Block_Product_List 클래스를 덮어 씀으로써 내 자신의 모듈을 만들었습니다.

컨트롤러에서 나는이 제품 entity_id을 잡아 그래서 내가

list.php라고 내 사용자 정의 작성 블록 내에서 사용할 수있는 레지스트리에서 제품을 보관 : 그것이 작동하는 방법 기본적으로 여기

입니다 여기에 제품 컬렉션을 채우는 방법이다 : 나는 또한 확인하기 위해 내 사용자 지정 모듈의 레이아웃 .XML에 다음을 추가

protected function _getProductCollection() 
{ 
    if (is_null($this->_productCollection)) { 
     $prod = Mage::registry('chosenproduct'); 
     $this->_productCollection = $prod->getRelatedProductCollection() 
      ->addAttributeToSelect('required_options') 
      ->addAttributeToFilter(array(array('attribute'=>'accessory_manufacturer','neq'=>false))) 
      ->addAttributeToSort('position', 'asc') 
      ->addStoreFilter() 
      ->setPageSize(30) 
      ->setCurPage(1); 
     ; 

     $this->_addProductAttributesAndPrices($this->_productCollection); 
     Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_productCollection); 
     $this->setProductCollection($this->_productCollection); 
    } 

    return $this->_productCollection; 
} 

가 확인 계층 탐색을 보여줍니다

<reference name="left"> 
     <block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/> 
    </reference> 

위와 같은 계층 적 탐색이 표시되지만, 위에서 추가 한 방법에서 사용되는 사용자 지정 컬렉션 대신 모든 제품이 컬렉션으로 간주됩니다.

나는 또한 내가이 $layer = Mage::getSingleton('catalog/layer');

레이어 클래스는 prepareProductCollection와 setCollection라는 방법을 가지고 있지만 어떤 이유로 나는 그것이 동작하지 않습니다 사용 카탈로그/계층을 얻을 수 있다는 것을 알고.

어떤 도움이 필요합니까?

기본적으로 사용자 지정 컬렉션에있는 제품의 계층 형 탐색을 원합니다.

감사합니다.

답변

15

나는 내가 원하는 것을 성취했습니다. 나는 두 클래스의 getProductCollection()를 덮어하고 난이 방법의 시작이 추가 protected $_customProductCollection;

: 나는 Mage_Catalog_Model_Layer 클래스와 Mage_Catalog_Model_Category

모두 이제 새로운 변수가 불렀다 $ _customCollection을 모두 덮어했다 :

if(isset($this->_customProductCollection)){ 
     return $this->_customProductCollection; 
    } 

이 두 클래스 모두에서이 "customProductCollection"을 설정할 수있는 방법이 있습니다. 설정이 끝나면 계층 형 탐색/범주의 나머지 데이터는이 컬렉션을 기반으로합니다.

)

+2

이 설정 방법은 무엇이며 어디에서 호출합니까? – easymoden00b