- 追加された行はこの色です。
- 削除された行はこの色です。
&pgid();
SEの[[小沼です。]]
こんにちは、SEの[[小沼]]です。
今回約2ヶ月ぶりの投稿になります。
*はじめに [#a64ede14]
-最近かかわった案件でMoveble Typeを使用しました。
-その中でいろいろなカスタマイズをしましたので、ここにまとめてみます。
-もういたるところで紹介されていることばかりですが。。
#blikimore
*本編 [#pa57da15]
**ページング [#qb67a4a7]
***要件 [#v61f8009]
-Movable Typeのデフォルトのテンプレートでは、カテゴリーアーカイブなどではひとつのページに全てのエントリーを表示している
-エントリーが何十件にもなったときにはページが長くなりすぎてしまう。
-というわけなので、カテゴリーアーカイブを複数のページに分ける必要があった。
***実装方法 [#me4704f7]
-ページングの利用は以下の方法がある
--ダイナミックパブリッシングにして、PHPファイルとして実装する
--プラグインを利用する。
---MTPaginate
---ArchivePage
---Paged Archives Plugin
-今回はPaged Archiveプラグインを使用した。
--使用前準備
---ダウンロードは下記サイトから
http://abates.tetrap.com/plugins/pagedarchives.html
---インストール方法は、他のプラグインと同じようにダウンロードしたものを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>
**テンプレートの共有 [#d8f19e84]
***要件 [#le277b74]
-ほぼ同一内容のブログを複数作成する必要があった。
-テンプレートにカスタマイズをおこなっているので、テンプレートを修正する必要があったときに、いちいち全てのブログのテンプレートを修正するのは面倒。
-ひとつのテンプレートを修正したら、他のテンプレートも自動的に修正されるような仕組みが欲しい。
***実装方法 [#yfb05d68]
-テンプレートは共有することができる。
--一つのテンプレートを編集したときは、もう一方のブログのテンプレートも自動的に修正されるようになる。
--といっても再構築しないといけないが。
-include moduleでなぜか、moduleテンプレートよりindexテンプレートが優先して読み込まれる。
***参考 [#r905b81e]
http://www.masahiko.info/blog/archives/000764.html
**カテゴリーアーカイブでカテゴリーに属していないエントリーを表示する方法 [#h696a830]
***要件 [#geb6d04b]
-以下のような要件を満たすブログを作成する必要があった。
--エントリーには「公式」のものと「非公式」なものの2種類がある。
---「非公式」なエントリーはカテゴリー「非公式」に設定するが、「公式」のものはカテゴリーには設定しない。
--「非公式」にカテゴライズされたエントリーと、「公式」のエントリーは(どこにもカテゴライズされていないエントリー)はそれぞれ、一覧画面がある。
--それぞれの一覧画面はカテゴリーアーカイブとし作成する。
--それぞれの一覧画面はカテゴリーアーカイブとして作成する。
---「非公式」の方はカテゴリーに属しているので問題はない。
---「公式」の方はカテゴリーに属していない。でもカテゴリーアーカイブが欲しい。どうしよう。
***実装方法 [#t59489b9]
-カテゴリー「official」を作成
-ダミーのカテゴリー「official」を作成
-ダミーのエントリーを作成し、「official」にカテゴライズ。
--一件もエントリーが存在しなければ「official」のカテゴリーアーカイブが生成されないため。
-
-ダミーのカテゴリー「official」に「公式」のエントリーを表示するように設定した。
-ただカテゴリーアーカイブ内で、以下のように設定をおこなっても要件は満たせない。
<MTEntries category="not 非公式 and not official">
...
</MTEntries>
-以下のようにMTArchiveListタグを利用する必要があった。
<MTArchiveList archive_type="Individual">
<MTEntries category="not 非公式 and not official">
...
</MTEntries>
</MTArchiveList>
-<MTArchiveList>タグを利用した。
***保留中の問題 [#cdd5396d]
-非公式の方でページングが使用できなくなった。。。Why?
-上記の対応だとページングが使用できなくなってしまいました。
**日本語、英語の切り替え方法 [#q5734b38]
***要件 [#p48dabae]
-エントリーアーカイブとカテゴリーアーカイブに日本語、英語を切り替えるボタンがある。
-日本語版も英語版もエントリー自体は同じである。
--投稿者が「日本語エントリー」「英語エントリー」を作成するわけではない。
-サイドメニューやパンくずリストの表示言語が切り替わる。
*** [#bd4e37af]
-lをつけたり、はずしたり
-でもページングがそれでは対応できなかった。
--結局jpをつける。javascriptで遷移をおこなう。という風にした。
-エントリーアーカイブ、カテゴリーアーカイブ共に日本語版と、英語版が存在する。
--エントリー自体は同一のものだが、サイドメニューやヘッダ、フッタの値のみが日本語、英語で切り替わる。
-日本語版と英語版はヘッダにあるボタンで切り替えることが出来る。
-さてどのように実装したらいいのだろうか?
**最初の画像を表示する [#e57c1547]
***実装方法 [#bd4e37af]
-日本語版と英語版のテンプレートを作成する。
-アーカイブ・マッピングで日本語版と、英語版のマッピングをそれぞれ作成する。
--出力フォーマットは以下のように設定した。
---%y/%m/%-b.htm(英語版)
---%y/%m/%-b.html(日本語版)
-日本語、英語の切り替えは、javascriptで実装。
--日本語版から英語版に移るときは、URLの末尾にlを追加
--英語版から日本語版に移るときは、URLの末尾にlを削除
***問題 [#o199d378]
-ただ、上記の方法ではカテゴリーアーカイブでうまくいきませんでした。
-というのもカテゴリーアーカイブではページングのためにPaged Archives Pluginを利用していたのですが、Paged Archives Pluginにより自動的に生成されるページが
「2.html」「3.html」というファイル名のため(アーカイブマッピングでhtmと指定しても無視される)、日本語版と英語版のファイル名がバッティングしてしまいます。
-結局カテゴリーアーカイブのファイル出力先は日英でディレクトリを分けて対応しました。
**複数のブログから最新のエントリーを取得し、表示する [#w697a8ea]
***要件 [#n19ecc0b]
-タイトルの通りです。
***実装方法 [#g6c8a47e]
-プラグインのインストール
--MultiBlogというプラグインを使用します。
http://apperceptive.com/plugins/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から確認できます。
***参考 [#b656d8e7]
http://www.itsmemo.com/it/movabletype/000006.html
http://bizcaz.com/archives/2006/07/27-224733.php
*終わり [#i879f7dd]
-以上です。
#blikifooter(小沼)
tag: [[MT>tag/MT]], [[MTPlugin>tag/MTPlugin]]