拙著「個人投資家は低位株で儲けなさい」が発売されました。
株価が安い「低位株」に投資する方法を解説しています。
自由国民社刊で、定価1,512円(消費税込み)です。
ブログ記事内で特定のカテゴリラベル表示
MTQで「ブログ記事内で特定のカテゴリラベル表示」という質問があがっていました。
この質問にお答えします。
1.質問の概要
以下のような構造のカテゴリがあるとします。
├ 職業 | ├ 医者 | ├ 教師 | ├ ...(その他職業名) | ├ 学歴 | ├ 大卒 | ├ 大学院卒 | ├ ...(その他学歴名) | ├ 地域 ├ 東京 ├ 大阪 ├ ...(その他地名)
また、個々のブログ記事は、職業/学歴/地域の中で、それぞれ1つずつカテゴリに属しています。
例えば、あるブログ記事は「医者」「大学院卒」「東京」のカテゴリに属し、また他のブログ記事は「教師」「大卒」「大阪」のカテゴリに属する、というような形です。
この状態で、それぞれのブログ記事が属するカテゴリを、職業/学歴/地域を別々に出力したいということです。
例えば、「医者」「大学院卒」「東京」のカテゴリに属するブログ記事の場合、「職業:医者、学歴:大学院卒、地域:東京」のように出力します。
2.親カテゴリを判断する
例えば、職業を出力したいとします。
この場合、ブログ記事が属するカテゴリの中で、親カテゴリが「職業」になっているカテゴリを探して、その情報を出力すれば良いです。
ブログ記事が属するカテゴリを順に出力するには、MTEntryCategoriesタグを使います。
また、「親カテゴリが○○」という条件判断は、MTIfIsDescendantタグ行うことができます。
MTParentCategoryタグのブロックの中で、MTIfIsDescendantタグで親カテゴリが「職業」「学歴」「地域」のどれになっているかを判断し、職業等を得ることができます。
なお、MTEntryCategoriesタグは、カテゴリの出力順序が不定です。
カテゴリの並び順の通りになるとは限りません。
例えば、上のカテゴリ構造で「医者」「大学院卒」「東京」のカテゴリを選択したとしても、出力はその通りの順序になるとは限らず、「東京」「大学院卒」「医者」のようになることもあり得ます。
そこで、MTEntryCategoriesタグのループの中でカテゴリ名を直接に出力しません。
いったん、職業/学歴/地域を変数に保存します。
そして、MTEntryCategoriesタグのループの後で、職業/学歴/地域の順に変数の値を出力します。
3.テンプレートの組み方
実際にテンプレートを組むと、以下のようになります。
<mt:EntryCategories> <mt:IfIsDescendant parent="職業"> <$mt:CategoryLabel setvar="work"$> </mt:IfIsDescendant> <mt:IfIsDescendant parent="学歴"> <$mt:CategoryLabel setvar="school"$> </mt:IfIsDescendant> <mt:IfIsDescendant parent="地域"> <$mt:CategoryLabel setvar="area"$> </mt:IfIsDescendant> </mt:EntryCategories> <ul> <li>職業:<$mt:GetVar name="work"$></li> <li>学歴:<$mt:GetVar name="school"$></li> <li>地域:<$mt:GetVar name="area"$></li> </ul>
1/11行目のMTEntryCategoriesタグで、ブログ記事が属するカテゴリを順に取り出し、繰り返しを行います。
2~4行目では、親カテゴリが「職業」の場合(2行目のMTIfIsDescendantタグ)、カテゴリ名を変数「work」に代入します(3行目のMTCategoryLabelタグ)。
同様に、5~7行目で学歴を変数schoolに代入し、8~10行目で地域を変数areaに代入します。
そして、12行目以降でwork/school/areaの順に各変数を出力し、職業/学歴/地域を表示します。
4.変数や条件判断は必須
この例のように、手の込んだ処理をしようとすると、変数や条件判断を避けて通ることができません。
拙著「Movable Type 5.1 Webサイト製作ガイドVolume 2」では、変数や条件判断について、かなり詳しく解説しています。
「変数や条件判断がよく分からない」という方は、ぜひ拙著をお読みください。