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

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タグで囲まれた部分と言うことです。

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