0

到目前为止,我还没有设法在网上找到任何已经满足我想要实现的目标的东西。我只是想将特定类别调用到列表中,但我希望能够通过 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>

如果有人可以建议我如何实现这一目标,那将是非常棒的 - 在此先感谢。

4

1 回答 1

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>
于 2012-05-14T16:50:35.110 回答