2012-05-14 1 views
0

아직까지도 나는 달성하고자하는 것을 이미 충족시키는 온라인을 찾을 수 없었습니다. 특정 카테고리를 목록으로 불러 오기만하면되는데, ID로 어떤 카테고리를 정의 할 수 있는지 알고 싶습니다. 예를 들어, 다음과 같이 입력 할 수 있습니다. -특정 Magento 카테고리를 카테고리 ID에서 표시

{{block type="catalog/navigation" name="catalog.category" template="developer/extension/script.phtml" ids="3,6,17,143,57"}} 

부모 카테고리 ID를 기반으로 여러 위치에 하위 카테고리 목록이 이미 표시되어 있지만 수백 개의 하위 카테고리가있는 경우 모든 항목을 표시하는 것이 항상 실용적이지는 않으므로 궁금합니다. 기존 스크립트가 위의 특정 범주 만 포함하도록 조정될 수 있습니까?

<?php 
//gets all sub categories of parent category 'cat-id-4' 
    $cats = Mage::getModel('catalog/category')->load(4)->getChildren(); 
    $catIds = explode(',',$cats); 

    $categories = array(); 
foreach($catIds as $catId) { 
    $category = Mage::getModel('catalog/category')->load($catId); 
    $categories[$category->getName()] = array(
     'url' => $category->getUrl(), 
     'img' => $category->getImageUrl() 
    ); 
} 

ksort($categories, SORT_STRING); 
?> 
<ul> 
    <?php if($category->getIsActive()): ?> 
    <?php foreach($categories as $name => $data): ?> 
     <li> 
      <a href="<?php echo $data['url']; ?>" title="<?php echo  $name; ?>" alt="<?php echo $name; ?>"><?php echo $name; ?></a> 
     </li> 
    <?php endforeach; ?> 
    <?php endif; ?> 
</ul> 

누구나 내가 이걸 어떻게 성취 할 수 있었는지 조언 할 수 있다면 환상적 일 것입니다. 미리 감사드립니다.

답변

2

이는 주어진 CMS 블록 코드로 작동합니다 :

<?php 
$catIds = explode(',', $this->getIds()); //<-- ONLY CHANGE MADE 

$categories = array(); 
foreach($catIds as $catId) { 
    $category = Mage::getModel('catalog/category')->load($catId); 
    $categories[$category->getName()] = array(
     'url' => $category->getUrl(), 
     'img' => $category->getImageUrl() 
    ); 
} 

ksort($categories, SORT_STRING); 
?> 
<ul> 
    <?php if($category->getIsActive()): ?> 
    <?php foreach($categories as $name => $data): ?> 
     <li> 
      <a href="<?php echo $data['url']; ?>" title="<?php echo $name; ?>" alt="<?php echo $name; ?>"><?php echo $name; ?></a> 
     </li> 
    <?php endforeach; ?> 
    <?php endif; ?> 
</ul> 
+0

이 완벽했다. 매우 감사합니다 :) – zigojacko