こんにちは、ディレクターの八木です。
先月後半にMovable Typeの新バージョン(3.3)がリリースされました。リリース直後は修正版が頻繁にでるなどややバタバタした印象がありましたが、7月に入って落ち着いてきたようなので、ビジネスサイトで使えそうな機能を中心に少しずつ味見してみようと思います。
例えばMovable Typeで以下のカテゴリ構成の企業サイトを作るとします。
製品は今後DDD、EEEと増える可能性があります。
「トップページに新着情報を表示させたいが、『会社概要』の更新情報は載せたくない」という風に、カテゴリによって記事を選別したい場合が往々にしてあると思いますが、今まではこれが意外と面倒でした。
カテゴリが完全に固定されていて増減しないのであればバージョン3.2までも対応可能でした。しかし
カテゴリの判定条件がANDかORしかなかったので、前述のように「特定のカテゴリに属するエントリーだけを除外(NOT)して表示したい」ような場合は、Regex プラグインやCatEntries プラグイン (日本語参考記事)などのお世話にならないとできませんでした。
嬉しいことにMovable Type 3.3ではNOTを使った条件設定が可能になり、プラグインが必要なくなりました。
●アトリビュートの条件設定(NOT)を使ってカテゴリ判別する
Movable Typeマニュアル>テンプレート・タグのアトリビュート(属性)
http://www.sixapart.jp/movabletype/manual/3.3/03_blog_admin_guide/customizing_blogs/template_tag_attributes.html
によれば、
アトリビュートの中には、categoryのように複数の値をサポートしているものがあります。AND、OR、NOTを使って、複数の値を指定できます。また、() で条件の優先順位を指定できます。たとえば、特定のカテゴリーのエントリーの一覧を出力する場合、次のように指定します。
と、あります。先ほどのカテゴリ構成を例に試してみましょう。
まずは以前のバージョンからある機能のおさらいです。
1)カテゴリー「プレスリリース」のエントリーだけ表示する
<MTEntries category="プレスリリース">のように書けばOKです。
・・・表示したい内容・・・
</MTEntries>
2)カテゴリーが「プレスリリース」でかつ「製品BBB」のエントリーだけ表示する(AND)
ANDを使って、こう書きます。
<MTEntries category="プレスリリース AND 製品BBB">
・・・表示したい内容・・・
</MTEntries>
3)カテゴリーが「製品AAA」か、あるいは「製品BBB」のエントリーだけ表示する(OR)
ORを使って、
<MTEntries category="製品AAA OR 製品BBB">
・・・表示したい内容・・・
</MTEntries>
と書きます。
次は今回3.3で追加されたNOTの使い方です。
4)カテゴリーが「会社概要」以外のエントリーを表示する(NOT)
<MTEntries category="NOT 会社概要">
・・・表示したい内容・・・
</MTEntries>
5)カテゴリーが「プレスリリース」でも「会社概要」でもないエントリーだけ表示する(複数のカテゴリにNOTを適用)
複数のカテゴリを除外したい場合は、対象となるカテゴリをORでくくって、それにNOTを適用します。
<MTEntries category="NOT (プレスリリース OR 会社概要)">
・・・表示したい内容・・・
</MTEntries>
1)プレスリリースのエントリーだけ、5)プレスリリースと会社概要以外のエントリーを設定すると、結果はこんな感じです。
いかがでしょうか?良い感じですね!