MTSubCatsRecurse タグの苦手意識を克服したいあなたへ

MTSubCatsRecurseタグの苦手意識を克服したいあなたへ贈る記事です。

ちょっとラフな感じで。

カテゴリをトップレベルからulの入れ子にしてリストアップするときのテンプレートは下記のようになるよね。

<mt:SubCategories top="1">
<mt:SubCatIsFirst>
<ul>
</mt:SubCatIsFirst>
    <li>
        <a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
        <mt:SubCatsRecurse>
    </li>
<mt:SubCatIsLast>
</ul>
</mt:SubCatIsLast>
</mt:SubCategories>

でもmt:SubCatsRecurseって苦手なんですよね、という人のためにmt:SubCatsRecurseタグなしで書きますね。

カテゴリって何階層まであります?
分からないけど、5階層くらいまであるかも?

そうすると、こうなりますね。

<mt:SubCategories top="1">
<mt:SubCatIsFirst>
<ul>
</mt:SubCatIsFirst>
    <li>
        <a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
        <mt:HasSubCategories>
        <mt:CategoryLabel setvar="current_category">
        <mt:SubCategories category="$current_category">
        <mt:SubCatIsFirst>
        <ul>
        </mt:SubCatIsFirst>
            <li>
                <a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
                <mt:HasSubCategories>
                <mt:CategoryLabel setvar="current_category">
                <mt:SubCategories category="$current_category">
                <mt:SubCatIsFirst>
                <ul>
                </mt:SubCatIsFirst>
                    <li>
                        <a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
                        <mt:HasSubCategories>
                        <mt:CategoryLabel setvar="current_category">
                        <mt:SubCategories category="$current_category">
                        <mt:SubCatIsFirst>
                        <ul>
                        </mt:SubCatIsFirst>
                            <li>
                                <a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
                                <mt:HasSubCategories>
                                <mt:CategoryLabel setvar="current_category">
                                <mt:SubCategories category="$current_category">
                                <mt:SubCatIsFirst>
                                <ul>
                                </mt:SubCatIsFirst>
                                    <li>
                                        <a href="<mt:CategoryArchiveLink>"><mt:CategoryLabel></a>
                                    </li>
                                <mt:SubCatIsLast>
                                </ul>
                                </mt:SubCatIsLast>
                                </mt:SubCategories>
                                </mt:HasSubCategories>
                            </li>
                        <mt:SubCatIsLast>
                        </ul>
                        </mt:SubCatIsLast>
                        </mt:SubCategories>
                        </mt:HasSubCategories>
                    </li>
                <mt:SubCatIsLast>
                </ul>
                </mt:SubCatIsLast>
                </mt:SubCategories>
                </mt:HasSubCategories>
            </li>
        <mt:SubCatIsLast>
        </ul>
        </mt:SubCatIsLast>
        </mt:SubCategories>
        </mt:HasSubCategories>
    </li>
<mt:SubCatIsLast>
</ul>
</mt:SubCatIsLast>
</mt:SubCategories>

あ、でもクライアントさんは最大で10階層くらいあるかもって言ってたかも?
じゃあ、さらに入れ子にして、、

いやいやいやいやいや。。。やめて。。。

ではでは、順を追って簡単に説明するとね、トップレベルカテゴリだけだと、

<ul>
    <li>
        <a href="#">Movable Type</a>
    </li>
    <li>
        <a href="#">Web Development</a>
    </li>
</ul>

こうだよね?
そこにサブカテゴリを入れるとしたら、

<ul>
    <li>
        <a href="#">Movable Type</a>
        【ここに<ul>タグ】
    </li>
    <li>
        <a href="#">Web Development</a>
        【ここに<ul>タグ】
    </li>
</ul>

っていうように【ここに<ul>タグ】っていうところにサブカテゴリのulを入れるよね?
分かりにくいからカテゴリ1つにすると、

<ul>
    <li>
        <a href="#">Movable Type</a>
        【ここに<ul>タグ】
    </li>
</ul>

だよね?
これをMovable Typeとか入っているところを抽象的に書くと、

<ul>
    <li>
        <a href="カテゴリアーカイブへのリンク">カテゴリ名</a>
        【ここに<ul>タグ】
    </li>
</ul>

だよね?
じゃあ、【ここに<ul>タグ】ってところも同じように抽象的に書くと、

<ul>
    <li>
        <a href="カテゴリアーカイブへのリンク">カテゴリ名</a>
        <ul>
            <li>
                <a href="カテゴリアーカイブへのリンク">カテゴリ名</a>
                【ここに<ul>タグ】
            </li>
        </ul>
    </li>
</ul>

こうだよね?

あ!!
今、外側のulタグコピペしたでしょ!
外側のulタグをコピーして、【ここに<ul>タグ】の行に貼り付けてインデントしたでしょ!

まあいいですよ、じゃあまだ残ってる【ここに<ul>タグ】も同じように抽象的に、

<ul>
    <li>
        <a href="カテゴリアーカイブへのリンク">カテゴリ名</a>
        <ul>
            <li>
                <a href="カテゴリアーカイブへのリンク">カテゴリ名</a>
                <ul>
                    <li>
                        <a href="カテゴリアーカイブへのリンク">カテゴリ名</a>
                        【ここに<ul>タグ】
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

って、あ! 今またさっきコピーしてクリップボードに残ってたulタグをペーストしてインデントしたでしょ。

・・・

そういうことですよ、mt:SubCatsRecurseタグのイメージは。

今コピペしたのを格好良く書くと、

<ul>
    <li>
        <a href="カテゴリアーカイブへのリンク">カテゴリ名</a>
        <mt:SubCatsRecurse>
    </li>
</ul>

ってなる。

Recurse っていうのは、1つの手順を繰り返し実行するって意味だから、まさに今繰り返しコピペした感じですよね。そして、mt:SubCatsRecurseタグの場合、その1つの手順というのはmt:SubCategoriesタグで囲まれた部分と言うことです。

どうでしょう、苦手意識が薄らいだかな?!

  • このエントリーをはてなブックマークに追加
Just a second...