2012-05-14 78 views
0

到目前为止,我还没有设法找到任何已经满足了我想要实现的东西的在线内容。我只是想在特定的类别中调用一个列表,但我希望能够通过ID来定义哪些类别,例如,我希望能够像下面这样调用它们: -从类别ID中显示特定的Magento类别

{{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