문제

기본 사이트의 동일한 루트 범주를 사용하는 사이트가 많이 있습니다. 추가 된 각 제품은 (와우)에 추가 된 사이트와 기본 사이트에 추가됩니다. 그러나 해당 사이트에 제품이있는 경우에만 사이트 별 카테고리가 표시되기를 바랍니다.

만약 내가 가지고 있다면:

Category1
Category2
Category3

그러나 Site1은 Category1 및 Category2에만 제품을 가지고있는 반면 Site2 및 Site3은 Category2 및 Category3에 생성물이 있습니다. 카테고리 1/2 만 Site1에 표시되기를 원하고 Site2 및 Site3에만 표시되도록 범주 2/3 만 나타납니다.

그러나, 사이트 1/2/3의 모든 생성물도 기본 사이트에 추가되기 때문에; 기본 사이트는 범주 1/2/3을 나열합니다.

메인 사이트에 직접 추가되는 제품이 없습니다. 단순히 다른 사이트의 저장소 역할을합니다.

이제 (확실히) 이것을 가능하게하는 쉬운 방법이 없다면 (확실히), 템플릿이 표시되는 사이트에만 제품이있는 카테고리를 나열하는 내 테마를 작성하는 것만 큼 간단할까요?

나는 Magento가 사용하는 기술의 초보자가 아닙니다. 따라서 사용자 정의 코드를 작성하는 것은 문제가되지 않습니다. 그러나 나는 그것을 편집하고 싶지 않기 때문에 나중에 Magento 버전으로 내 코드 기반을 업그레이드하는 것이 더 쉬워 질 것입니다.

감사,
-넬슨

도움이 되었습니까?

해결책

글쎄, 당신이 할 수있는 일은, 컬렉션 (모델을 통해)으로 자신의 도우미를 만들고 제품 수를 기준으로 컬렉션을 필터링하는 것입니다.

거친 초안 만 있지만 다른 마젠토 관련 질문에 코드를 게시했습니다. 카테고리 별 마젠토 제품. 제품 수를 추가하는 방법과시기를 볼 수 있습니다.이 작업이 완료되면 다시 필터링 할 것입니다.

나는 이것이 성능면에서 매우 "훌륭하다"고 생각하지 않으므로 모델 클래스를 사용하는 대신 ~할 수 있었다 직접 작성하고, 확장하고, 기본 필터를 추가하거나, 데이터베이스에 직접 단축 시키십시오.

피부/템플릿에 머무르는 한 업데이트에 더 큰 문제가 없습니다.

다른 팁

이것은 도움이 될 수있는 카테고리를 숨기는 간단한 솔루션입니다.

top.phtml 파일의 원래 내용은 아래에서 보일 것입니다.

<?php $_menu = $this->renderCategoriesMenuHtml(0,'level-top') ?>
<?php if($_menu): ?>
<div>
    <ul id="nav">
        <?php echo $_menu ?>
    </ul>
</div>
<?php endif ?>

위의 코드를 아래 코드로 바꾸십시오.

<?php $_menu = ''?>
<?php $excludeCat = array(); ?>
<?php foreach ($this->getStoreCategories() as $_category): ?>
    <?php if($_category->getProductCount() <=0) {
          $excludeCat[] = $_category->getId(); 
    }
    ?>
    <?php $_menu .= $this->drawItem($_category) ?>
<?php endforeach ?>
<?php if ($_menu): ?>
<div>
    <ul id="nav">
    <?php foreach ($this->getStoreCategories() as $_category): ?>
    <?php if (!in_array($_category->getId(), $excludeCat)) : ?> <?php echo $this->drawItem($_category) ?>
    <?php endif; ?>
    <?php endforeach ?>
    </ul>
</div>
<?php endif; ?>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top