2014-04-10 2 views
3

앵커 범주 페이지에서 해당 범주에 직접 포함 된 제품 만 표시하려고합니다. 나는 하위 범주의 제품을 보여주고 싶지 않습니다.이 경우 적절하지 않습니다. 현재 카테고리의 제품을 필터링해야하므로 계층 적 탐색이 필요하므로 앵커 카테고리가 필요합니다.Magento - 앵커 범주에 표시되는 하위 제품 중지

처음에는 view.phtml 템플릿의 제품을 필터링하려고했지만 뷰의 제품 만 필터링하여 적절한 대답은 아닙니다. 이 작업을 수행하면 하위 제품이있는 페이지에서 큰 차이가 발생하지만 단순히 표시되지 않습니다. 제품 수 (예 : "117 제품 중 1-12")가 "잘못되었습니다".

필자가 읽은 바로는 코어 재 작성이 필요합니다. 아마도 인덱스 프로세스 일 겁니다. 이 재 작성으로 어디서부터 시작해야할지 정말 모르겠다. 오히려 복잡해 질 것이라고 확신한다.

내 가정은 틀린가요? 이미이 문제를 해결 했습니까?

+0

내가 명확하게 할 수있는 방법을 알고하지 않습니다 찾을 수 있습니다. 나는 단지 카테고리에 직접적이지 않은 제품이 프론트 엔드 카테고리에 나타나기를 바랄 뿐이다. 카테고리를 앵커 범주로 남기고 싶습니다. 필자가 작성한 코드는 막 다른 골목이므로 게시 할 필요는 없습니다. – Markie

답변

4

고토 app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php

사본

app/code/local/Mage/Catalog/Model/Resource/Product/Collection.php에 찾기 기능 addCategoryFilter( 그리고 여기 당신은 코드가

public function addCategoryFilter(Mage_Catalog_Model_Category $category) 
    { 
     $this->_productLimitationFilters['category_id'] = $category->getId(); 
/* start to comment here  
if ($category->getIsAnchor()) { 
      unset($this->_productLimitationFilters['category_is_anchor']); 
     } else { 
      $this->_productLimitationFilters['category_is_anchor'] = 1; 
     }*/ 
/* new line */ 

    $this->_productLimitationFilters['category_is_anchor'] = 1; 

     if ($this->getStoreId() == Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID) { 
      $this->_applyZeroStoreProductLimitations(); 
     } else { 
      $this->_applyProductLimitations(); 
     } 

     return $this; 
    } 
+1

작동하는 것처럼 보입니다. 나는 그것을 풀어주고 작동한다면 답을 받아 들일 것입니다. 이것은 단지 모델 일 뿐이므로 파일을'/ app/code/local/mage /'에 복사하는 대신에 그 함수를위한 재 작성 모듈을 작성할 것입니다. 더 나은 방법입니다. (더 복잡한 방법은 스택 오버플로 대답에 설명). – Markie

-1

정확한 조건을 이해했다면 한 줄의 코드가 필요하지 않습니다. Magento는 계층 구조에 관계없이 모든 카테고리의 제품을 자유롭게 입력 할 수 있습니다.

그래서 다음과 같은 시나리오를 고려하십시오

분류 A-> 카테고리를 다음 제품에만 범주 A에 아니라이 전체 젠토 시스템과 조화를 작동 카테고리 A에 할당 할 수있는

레이어드 네비게이션과 페이지에 표시된 프로듀서는 없습니다.

+2

이 경우 "카테고리 a"에 제품을 추가하면 "카테고리 A"에 할당되지 않은 경우에도 "카테고리 A"에 대해 "앵커가" "예"로 설정된 경우 "카테고리 A"에 표시됩니다 ". 죄송합니다.이 기능은 저에게 도움이되지 않습니다. – Markie