0

Magento Webサイトのフロントエンドでのカテゴリリストの描画方法を変更しようとしています(簡単なアイデア)。分離してjqueryアコーディエーションで使用したいカテゴリのリストがあるので、EGの場合。ID 1〜10のカテゴリが含まれる「2010年以前」のヘッダーが必要です。次に、ID 11〜20のライブカテゴリが含まれる「2011」という見出しが必要です。

以下のデフォルトのカテゴリコードは、IDをループして、カテゴリリストを-にエコーアウトしますが、 :<UL>をカスタマイズしたいと思います。<UL>

<?php $collection = $this->_getCollection(); ?>
<?php if (count($collection) > 0) : ?>



    <?php foreach ($collection as $_category ) : ?>            

                <li>
                    <a href="<?php echo $this->getUrl('gallery/category/view/', array('id' => $_category->getId())); ?>"><?php echo $this->htmlEscape($_category->getName()) ?></a>
                </li>

    <?php endforeach ?>

<?php endif; ?>

木が見えない!-IDを配列にプルし、IFステートメントに基づいて新しい構造を描画することを考えましたが、配列を構築することはできませんでした。

誰かが私がループを壊して言うことができる簡単な方法を見ることができますか?IDが1から10の場合、リストに入れてから 、たとえば<li class="2010">ID 11から20に進みますか?<li class="2011">

どうもありがとう

4

2 に答える 2

1

表示したくないカテゴリIDを確認し、次のIDcontinue;を取得するために使用してください。

<?php foreach ($collection as $_category ): ?>
<?php if ($_category->getId() == 10) { continue; } ?>
    <li>
        <a href="<?php echo $this->getUrl('igallery/category/view/', array('id' => $_category->getId())); ?>"><?php echo $this->htmlEscape($_category->getName()) ?></a>
    </li>
<?php endforeach ?>
于 2012-05-02T10:01:25.073 に答える
0

あなたはあなたの問題を分割する必要があります。1つの部分は出力であり、関数で表すことができます。

<?php

$htmlLi= function($class, $url, $name) {
?>
                <li class="<?php echo $class; ?>">
                    <a href="<?php echo $url; ?>"><?php echo $name; ?></a>
                </li>
<?php
}

次に、IDに基づいてクラス名を決定するロジックがあります。

$classById = function($id) {
    $class = $id < 11 ? '2010' : '2011';
    return $class;
}

そして、あなたは最終的にこれをまとめたいと思います:

<?php $collection = $this->_getCollection(); ?>
<?php if (count($collection) > 0) : ?>

    <?php foreach ($collection as $_category) {
        $id    = $_category->getId());   
        $class = $classById($id);
        $url   = $this->getUrl('gallery/category/view/', array('id' => $id);
        $name  = $this->htmlEscape($_category->getName());
        $htmlLi($class, $url, $name);
    } ?>

<?php endif; ?>

これは、独自の関数_getCollection()が必要な形式のデータをまだ返さないことも示しています。ループに本当に必要なフィールドを返す方がおそらく良いでしょう。

$class, $url and $name
于 2012-05-02T10:21:43.763 に答える