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 に答える