2012-02-13 2 views
0

내 카테고리 중 하나에 특정 카테고리를 표시하려고하는데 이상한 결과가 나타납니다. 다음 코드를 사용하여 ID가 ​​5 인 범주를로드하려고합니다.Mage_Catalog_Model_Category를 사용하는 이상한 행동

그러나 범주에 제품이 있어도 결과가 반환되지 않습니다. ID을 2 (기본 카테고리)로 변경했으며이 카테고리에 제품이 없더라도 2 개의 제품을 반환합니다!

내가 코드를로드하고있어 어떻게, 내가, 정적 블록 "카테고리 별보기"라는 생성을 활성화하고 다음 코드로 작성 : 다음

{{block type="catalog/navigation" template="catalog/product/by_category.phtml"}} 

, 나는 새로운 페이지를 생성 정적 블록을 추가했습니다.

다른 누구도 전에 경험 했습니까? 누구든지 손 빌려 줄 수 있습니까? 이 코드는 정적 블록에 그런 식으로 작동하지 않습니다

$catalog = Mage::getModel('catalog/category')->load(/* your category ID*/); 
$collection = $catalog->getProductCollection(); 
Zend_Debug::dump($collection->getItems()); 

:

+3

카탈로그/카테고리)'. '$ category-> load (5)'메소드 호출은 항상로드 된 모델을 리턴하므로, 귀하의 질문이 약간 수정 될 수 있다고 생각합니다. 또한 기본 카테고리와 같은 것은 없습니다. 루트 카테고리 란 뜻인가? 루트 카테고리에 대한'is_anchor' 설정 값은 무엇입니까? 제품을 검색하면 제품이 보이나요? – Vinai

답변

1

프로그래밍은, 다음으로해야 할 범주의 제품 목록을로드합니다. Mage_Core_Block_Template (또는 비슷한) 유형의 클래스를 만들고 미리 정의 된 카테고리 ID로 컬렉션을 준비한 다음 정적 블록에 다음 코드를 사용할 수 있습니다. {{block type = "catalog/mynewblock"template = "catalog/product/mynewblock.phtml "category_id = 'my_category_ID_value'}}

블록이 CMS 모듈에 의해 인스턴스화되고 필터 Mage_Core_Model_Email_Template_Filter 덕분에 블록의 값은 category_id가됩니다. 블록에서 다음을 수행해야합니다 : 당신은이 질문에 다른 정보를 찾을 수 있습니다

protected function _beforeHtml(){ // or in the protected function _toHtml() depending of what you want to do and how you want to do it. 
    $categoryId = $this->getCategoryId(); 
    $catalog = Mage::getModel('catalog/category')->load($categoryId); 
    $collection = $catalog->getProductCollection(); 
    $products = $collection->getItems(); 
    $this->setProducts($products); // in your template file you can, then, do $this->getproducts(); etc... 
    ... 
} 

내가 여기 How to display multiple categories with a Magento block

카테고리는 모델 팩토리 메소드`마법사 ::을 getModel를 ('사용하여 인스턴스화해야