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
タグで囲まれた部分と言うことです。
どうでしょう、苦手意識が薄らいだかな?!