エンジニアブログ

エンジニアブログ
MT技術情報

remove_htmlを活用する

いたはし 2009年01月30日

こんばんは。お久しぶりの板橋です。
今日は複雑な処理ではなく、簡単なTIPSをひとつ。

みなさん、remove_htmlというグローバル・モディファイアは使われていますか?
タグの値からhtmlタグを除外するモディファイアです。よくあるのが、<$MTEntryExcerpt remove_html="1"$>などですね。このタグで、記事から自動出力される概要からhtmlタグを除外することができます。
...たまにソースを除くと、meta descriptionにものすごい改行が入っていたり、htmlタグが出ていたりするサイトってありませんか?remove_htmlを入れればそれが解決します。

さて、ここまでは標準的な使い方のお話でした。

今回は、このremove_htmlを利用して、デフォルトの機能のみでフォルダやカテゴリを並びかえたり、特殊なグループ設定をつけてみたり...という方法をご紹介いたします。

1. デフォルト機能のみでフォルダ/カテゴリを並びかえる

みなさんは普段フォルダやカテゴリのラベル、どのように設定されているでしょうか?
恐らく、「日記」「写真」「その他」...など、日本語で入れてみたり、はたまた英語で「diary」「photo」...など、表示に使われる名前を入れているかと思います。

そこで、ラベルに一工夫。
例えば、写真、日記、その他の順に並べたいとします。

<1>写真
<2>日記
<3>その他

htmlタグを打つ時に囲む半角のカッコで数字を囲みます。
続いて、フォルダを呼び出してみましょう。

<ul>
<MTFolders show_empty="1">
<li><$MTFolderLabel$></li>
</MTFolders>
</ul>

すると、以下のように表示されると思います。

<1>写真
<2>日記
<3>その他

並び順はかわりましたが、数字とカッコは表示したくないですよね。
そんなときこそremove_htmlの出番です。

<ul>
<MTFolders show_empty="1">
<li><$MTFolderLabel remove_html="1"$></li>
</MTFolders>
</ul>

remove_htmlではカッコの中身をhtmlタグとして認識してくれるので、

写真
日記
その他

という順に並びかわります。
#まあ、UIが優れた並び替えのプラグインもあるのであまり需要はなさそうですが...


2. 特殊なグループ設定をつける

上記の並び替えを参考に、今度はグループ設定をつけてみましょう。
例えばカテゴリーが以下のようなカテゴリーが存在するとします。

全社ニュース
総務部からのお知らせ
今日の社食メニュー
渋谷おすすめランチ

ここで、例えば自分が「全社ニュース」のカテゴリページにいる場合は、「総務部からのお知らせ」は出したいが、「今日の社食メニュー」、「渋谷おすすめランチ」は出したくない...という場合、以下のような処理で実現できます。

<news>全社ニュース
<news>総務部からのお知らせ
<lunch>今日の社食メニュー
<lunch>渋谷おすすめランチ

あとはカテゴリーを出すところで以下のような処理をしてあげれば完了です。

<$MTArchiveCategory setvar="thisgroup"$>
<ul>
<MTCategories>
<MTSetVarBlock name="setgroup"><MTIf tag="MTArchiveCategory" like="news">news<MTElseIf name="lunch">lunch</MTIf></MTSetVarBlock>
<MTIf name="thisgroup" like="$setgroup">
<li><$MTCategoryLabel remove_html="1"$></li>
</MTIf>
</MTCategories>
</ul>

まず最初に現在地のカテゴリラベルをthisgroupにセットします。
続いてMTCategoriesでカテゴリの一覧を出し、吐き出されるカテゴリラベルに、先程設定したグループ「news」が含まれるかチェックします。含まれる場合はsetgroupにnewsを、含まれない場合は次のElseIfでlunchをセットします。

次に、現在地のカテゴリとして設定したthisgroupに、先程セットしたsetgroupの値が含まれるかチェックし、含まれていればカテゴリラベルを出力します。含まれていなければ出力せず、次のカテゴリを処理します。

例えば現在地が「<news>全社ニュース」であった場合、最初にthisgroupに「<news>全社ニュース」がセットされます。
次の処理でカテゴリの一覧を出しますが、setgroupに同じnewsがセットされた全社ニュースと総務部からのお知らせは出力しますが、lunchがセットされた今日の社食メニューや渋谷おすすめランチは出力されません。

...と、こういった形で簡単なグループ分けをすることができます。
なお、このタグはカテゴリ、或いはブログ記事のアーカイブでのみ動作します。
カテゴリを含まない月別アーカイブ(カテゴリ別月別等を除く)やインデックスページなどでは動作しません。

と、このようにいろいろな活用方法があります。
日ごろあまり目を向けないグローバル・モディファイアですが、便利なものも多いので、一度一覧に目を通してみてはどうでしょうか。「こういう処理をしたかった...」というものもあるかもしれません。

グローバル・モディファイアリファレンス(SixApart社)
http://www.movabletype.jp/documentation/appendices/modifiers/