2011.02.15 もみじ
こんにちは、もみじです。
くじ運が良すぎて11名中11番目を引いたのでようやく登場です!
一応エンジニアですが、基本的にはプログラミングしないので何を書いていいのやら。
と思っていましたが、最近MovableTypeのお勉強中なので、MTについて気付いたことや、
悩んだことなどなどを書いていこうと思います。
今回は「エントリーをファイル出力しない方法」
例えば、サイトのトップページに「特別なお知らせ」として表示させたりするような場合に、
ブログ記事を普通に作ると、本来ならばページとして不要な「特別なお知らせ」のページも生成されてしまいます。
出力されたHTMLファイルを手動で削除してもいいのですが、忘れてしまう場合などもあるかもしれないので、MT側で出力制御を行ってみたいと思います。
★やりたいこと
ブログ記事によって、ページ生成する/しないの出し分けをしたい。
カテゴリごとにという方法もありますが、敢えてブログ記事によって出し分けをする方法にしてみました。
★必要なプラグイン
どちらもダウンロードしたZipファイルを解凍し、Movable Typeの「plugins」ディレクトリにアップロードするだけです。
★やりかた
①カスタムフィールドの作成
カスタムフィールドを2つ作成しておきます。
ページ生成:ページ生成する/しないのラジオボタン(テンプレートタグをEntryDataPageで生成)
リンク先URL:生成しない場合のリンク先を入力できるようURL入力欄
ブログ記事の作成画面はこんな感じ。
②テンプレートモジュール作成
ファイルパス用のテンプレートモジュールを制作する。
名前はなんでもいいのですが、とりあえず「ページ生成」としてみました。
「ページ生成」の中身は以下の通り。
*** 説明 ***
AppleModifierでテンプレートモジュールの出力結果の改行を取り除く。
カスタムフィールドのページ生成する/しないのラジオボタン「EntryDataPage(カスタムフィールド作成時につけたテンプレートタグ名)」で判定します。
「する」にチェックした場合は
4行目:<$mt:FileTemplate format="%y/%m/<$MTEntryBasename$>.html"$>
になり、
「しない」にチェックした場合は「*no_rebuild*」をパスとする。
NoRebuildにより「*no_rebuild*」がパスに付与された場合はファイルが出力されなくなるという仕組みです。
*** 注意 ***
最後の「</MTApplyModifier>」タグの後には、改行やスペースを入れない。いれるとファイル名が文字化けする。
③アーカイブのパスの設定
最後に、アーカイブのパスの設定を変えます。
「ブログ記事」のテンプレートの編集を開き、テンプレートの設定のアーカイブマッピングの部分を編集する状態にします。
そして、パスの部分で「カスタム」を選び、以下を入力します。
<$mt:Include module="ページ生成" blog_id="2"$>
再構築で完成!
これでテンプレートモジュールに沿った条件でファイルが出力されるようになるので、
ページ生成しないをチェックした場合、NoRebuildプラグインの効果によってブログ記事のページは出力されなくなります。
思っているより簡単だったのですが。
こちらの実装をしたとき、お客様の開発環境だったので勇気がなく最後の一歩をなかなか踏み出せず、時間がかかってしまいました・・・。
まだまだMTを自由自在に使いこなすには時間がかかりそうです。
※Movable Type Pro version 5.04で実装及び動作確認しております。