Movable Type/開発Tips/カスタマイズ方法いろいろ http://www.ark-web.jp/sandbox/wiki/3226.html
Movable Type/開発Tips/カスタマイズ方法いろいろ
こんにちは、SEの小沼です。
今回約2ヶ月ぶりの投稿になります。
はじめに †
- 最近かかわった案件でMoveble Typeを使用しました。
- その中でいろいろなカスタマイズをしましたので、ここにまとめてみます。
- もういたるところで紹介されていることばかりですが。。
目次 †
本編 †
ページング †
要件 †
- Movable Typeのデフォルトのテンプレートでは、カテゴリーアーカイブなどではひとつのページに全てのエントリーを表示している
- エントリーが何十件にもなったときにはページが長くなりすぎてしまう。
- というわけなので、カテゴリーアーカイブを複数のページに分ける必要があった。
実装方法 †
- ページングの利用は以下の方法がある
- ダイナミックパブリッシングにして、PHPファイルとして実装する
- プラグインを利用する。
- MTPaginate
- ArchivePage
- Paged Archives Plugin
- 今回はPaged Archiveプラグインを使用した。
- 使用前準備
- ダウンロードは下記サイトから
http://www.teamerblog.com/wiki/ - インストール方法は、他のプラグインと同じようにダウンロードしたものをpluginフォルダに置くだけです。
- ダウンロードは下記サイトから
- 使用方法
- MTの管理画面から「設定」「プラグイン」「Paged Archives」「設定を表示」で「Entries per page」の値を設定します。
- つづいてカテゴリーテンプレートに以下のように記述
<!-- エントリーの一覧を表示する箇所 --> <MTEntries> <MTPAEntry> ... </MTEntries> <MTPAEnd> <!-- ページング機能を表示する箇所 --> <MTPAIfMultiplePages> <p class="page-navigation"> <MTPAPreviousPage text="≪ prev" show="1"> | <MTPAPageNum> / <MTPAPageCount> | <MTPANextPage text="next ≫" show="1"> </p> </MTPAIfMultiplePages>
- 使用前準備
テンプレートの共有 †
要件 †
- ほぼ同一内容のブログを複数作成する必要があった。
- テンプレートにカスタマイズをおこなっているので、テンプレートを修正する必要があったときに、いちいち全てのブログのテンプレートを修正するのは面倒。
- ひとつのテンプレートを修正したら、他のテンプレートも自動的に修正されるような仕組みが欲しい。
実装方法 †
- テンプレートは共有することができる。
- 一つのテンプレートを編集したときは、もう一方のブログのテンプレートも自動的に修正されるようになる。
- といっても再構築しないといけないが。
- include moduleでなぜか、moduleテンプレートよりindexテンプレートが優先して読み込まれる。
参考 †
http://www.masahiko.info/blog/archives/000764.html
カテゴリーアーカイブでカテゴリーに属していないエントリーを表示する方法 †
要件 †
- 以下のような要件を満たすブログを作成する必要があった。
- エントリーには「公式」のものと「非公式」なものの2種類がある。
- 「非公式」なエントリーはカテゴリー「非公式」に設定するが、「公式」のものはカテゴリーには設定しない。
- 「非公式」にカテゴライズされたエントリーと、「公式」のエントリーは(どこにもカテゴライズされていないエントリー)はそれぞれ、一覧画面がある。
- それぞれの一覧画面はカテゴリーアーカイブとして作成する。
- 「非公式」の方はカテゴリーに属しているので問題はない。
- 「公式」の方はカテゴリーに属していない。でもカテゴリーアーカイブが欲しい。どうしよう。
- エントリーには「公式」のものと「非公式」なものの2種類がある。
実装方法 †
- ダミーのカテゴリー「official」を作成
- ダミーのエントリーを作成し、「official」にカテゴライズ。
- 一件もエントリーが存在しなければ「official」のカテゴリーアーカイブが生成されないため。
- ダミーのカテゴリー「official」に「公式」のエントリーを表示するように設定した。
- ただカテゴリーアーカイブ内で、以下のように設定をおこなっても要件は満たせない。
<MTEntries category="not 非公式 and not official"> ... </MTEntries>
- 以下のようにMTArchiveListタグを利用する必要があった。
<MTArchiveList archive_type="Individual"> <MTEntries category="not 非公式 and not official"> ... </MTEntries> </MTArchiveList>
保留中の問題 †
- 上記の対応だとページングが使用できなくなってしまいました。
日本語、英語の切り替え方法 †
要件 †
- エントリーアーカイブ、カテゴリーアーカイブ共に日本語版と、英語版が存在する。
- エントリー自体は同一のものだが、サイドメニューやヘッダ、フッタの値のみが日本語、英語で切り替わる。
- 日本語版と英語版はヘッダにあるボタンで切り替えることが出来る。
- さてどのように実装したらいいのだろうか?
実装方法 †
- 日本語版と英語版のテンプレートを作成する。
- アーカイブ・マッピングで日本語版と、英語版のマッピングをそれぞれ作成する。
- 出力フォーマットは以下のように設定した。
- %y/%m/%-b.htm(英語版)
- %y/%m/%-b.html(日本語版)
- 出力フォーマットは以下のように設定した。
- 日本語、英語の切り替えは、javascriptで実装。
- 日本語版から英語版に移るときは、URLの末尾にlを追加
- 英語版から日本語版に移るときは、URLの末尾にlを削除
問題 †
- ただ、上記の方法ではカテゴリーアーカイブでうまくいきませんでした。
- というのもカテゴリーアーカイブではページングのためにPaged Archives Pluginを利用していたのですが、Paged Archives Pluginにより自動的に生成されるページが
「2.html」「3.html」というファイル名のため(アーカイブマッピングでhtmと指定しても無視される)、日本語版と英語版のファイル名がバッティングしてしまいます。 - 結局カテゴリーアーカイブのファイル出力先は日英でディレクトリを分けて対応しました。
複数のブログから最新のエントリーを取得し、表示する †
要件 †
- タイトルの通りです。
実装方法 †
- プラグインのインストール
- MultiBlogというプラグインを使用します。
http://apperceptive.com/plugins/multiblog/
- MultiBlogというプラグインを使用します。
- プラグインの設定
- プラグインの設定画面から、MultiBlogを使用したテンプレートを再構築するタイミングを設定することができます。
- 詳しくは下記、参考サイトをご覧になってください。
- プラグインの設定画面から、MultiBlogを使用したテンプレートを再構築するタイミングを設定することができます。
- テンプレートの記述
<MTMultiBlogEntries inclue_blogs="1,2,3" sort_order="descend" sort_by="created_on" lastn="3"> ... </MTMultiBlogEntries>
- inclue_blogsの中に記述されている「1,2,3」というのはブログIDです。
- ブログIDは、そのブログの管理画面を開いたときのURLから確認できます。
参考 †
http://www.itsmemo.com/it/movabletype/000006.html
http://bizcaz.com/archives/2006/07/27-224733.php
複数のブログを一度に再構築する †
要件 †
- 前述の通り、複数のブログが存在する。
- テンプレートを変更した場合などにいちいち全てのブログを再構築しなくてはならない。
- それはすごく面倒である。いっぺんに全部のブログを再構築する方法はないものか?
実装方法 †
- PowerRebuildプラグインを利用する。
- PowerRebuild is free for personal users, however, a donation of $5.00 is greatly appreciated. Commercial users are encouraged to support this plugin by donating at least $15.00
- 使用方法詳細については下記参考サイトを参照してください。
- ただしこのプラグイン
PowerRebuild is free for personal users, however, a donation of $5.00 is greatly appreciated. Commercial users are encouraged to support this plugin by donating at least $15.00
とのことですので、商用での利用の場合は有料となりますorz
参考 †
特定のカテゴリだけを表示するカテゴリ一覧を作成する。(2007/06/12追記) †
要件 †
- 特定のカテゴリだけを抽出した一覧を表示したい。
実装方法 †
- FilterCategoriesを使用する。
- 使用例は下記参考サイトを参照のこと。
参考 †
終わり †
- 以上です。