MTをCMSとして使おう

Movable Type (以後MT)とは、ブログツールの一つで、ブログを管理するために作られたソフトだ。
広告無しのブログの大半は、MTでブログを作成していると思っていいだろう。それだけメジャーで人気のあるブログツールである。

このMTは、無料で使えて、もっとも高機能なブログツールである。
有料ライセンスもあるが、個人で使う場合のほとんどは無料で大丈夫なはずだ。
(条件:1サーバーのみ。投稿者一人。個人サイト。他は全機能使用可能)

CMSとは、コンテンツマネージメントシステムの略で、簡単に言えば、サイトを作成管理するツールのことである。
ブログツールは、CMSの中でブログに特化したツールだが、だからといってブログにしか使っちゃいけないことはない。
普通にCMSとして優れた潜在能力がある。

では、MTを使って高機能な普通のサイトを作るヒントを紹介しよう。
対象は、最新のMT3.2以降である。(3.2から仕様が大きく異なっているため)
一気に紹介するから、ちょっと長いよ・・・・・。

MTはCGIで作られているため、CGI対応のサーバーに限られる。
マニュアル通りにインストールしよう。
大抵は、アップロードして、CGIファイルの属性を実行可能にセットするだけだ。

以下の説明は、実例をお見せできないので、ちょっと分かりにくいかもしれないがご勘弁を。
他の私のサイト(秘密)で使っているテクニックになる。

■ナビゲーション(パンくず)の設置

MT標準のテンプレートでは、各ページの上に

『前のページの名前  メイン 次のページの名前』

というように、ナビゲーションリンクが表示される。
ただのブログではこれで良いのだが、普通のサイトを作りたい場合、これは問題である。

今どのカテゴリを表示しているかの道しるべを表示すると便利だ。
大手サイトでよく見かける。

『メイン > 第一カテゴリ名 > 第二カテゴリ名 > 表示しているカテゴリ名』

これを俗に『パンくず』と言う。
こうすることで、サイト観覧が非常にスムーズになるだろう。
やりかたは、テンプレートの各アーカイブに記述すればよい。

・カテゴリーアーカイブ

<a href="<$MTBlogURL$>" title="&quot;<$MTBlogName$>&quot;メインページへ">メイン</a> >
<MTParentCategories exclude_current="1"><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a> >
</MTParentCategories ><b><$MTArchiveTitle$></b>

・エントリーアーカイブ

<a href="<$MTBlogURL$>" title="&quot;<$MTBlogName$>&quot;メインページへ">メイン</a> >
<MTParentCategory >
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>
 > </MTParentCategory>
<a href="<$MTEntryLink archive_type="Category"$>"><$MTEntryCategory$></a> >
<strong><$MTEntryTitle$></strong>

■空の親カテゴリーのページ作成

パンくずを作った時の問題が、階層化したカテゴリの扱い。
エントリーを末端カテゴリにしか登録しな場合、浅い階層のカテゴリにはエントリーが無い状態となる。
そうすると、パンくずの便利さが半減。
『メイン>第一>第二>エントリー』
上記のパンくずで、第一にエントリーが無い場合、第一をクリックしてもページがありません。
よって、メインまで戻らないと他のエントリーが見れない。 とても不便だ。
これを解消する方法を紹介しよう。

まず、カテゴリアーカイブに、子カテゴリ一覧を表示するようテンプレート編集。
エントリーとパンくずの間に表示させればいいだろう。

<MTSubCategories>                                                
<MTSubCatIsFirst><ul></MTSubCatIsFirst>                    
<MTIfNonZero tag="MTCategoryCount">                                
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a>  
<MTElse>                                                                
<li><MTCategoryLabel>                                              
</MTElse>                                                                
</MTIfNonZero>                                                          
<MTSubCatsRecurse>                                                     
</li>                                                                    
<MTSubCatIsLast></ul></MTSubCatIsLast>                     
</MTSubCategories>

次に、題名本文ともに空のエントリーを投稿しよう。
これで、エントリー無しの子カテゴリメニューのみの表示が完成だ。
空エントリーは、そのカテゴリの説明等にしてもいいね。

■エントリーページで、同じカテゴリのエントリー一覧を表示

よく企業のニュース系サイトで見かける、エントリーの最後に関連記事一覧を表示する方法。
もっとも簡単なのは、同じカテゴリの記事一覧だ。
これは標準のMTではサポートしていないので、プラグインを使うことになる。

MTEntryCategoryEntries このプラグインで簡単に実現。
プラグインは、pluginフォルダにコピーするだけで、自動認識するからお手軽。

使い方は、エントリーアーカイブに

<h2><$MTEntryCategory$>に関連する記事</h2>
<ul>
<MTEntryCategoryEntries lastn="10">
  <li><a href="<$MTEntryPermalink$>"><MTEntryTitle></a></li>
</MTEntryCategoryEntries>
</ul>

■ちょっとしたこと

・各アーカイブから、日付や投稿者情報などの表示は削除しよう。
ブログじゃないから、普通は要らないだろう。
コメントは運営方針によるが、あったほうが何かと便利かもしれない。

・ブログもやりたい場合。
通常のアーカイブテンプレートとは別に、ブログ用のアーカイブテンプレートを作成しよう。
複数のアーカイブを生成する機能を利用する。
カテゴリリストからブログのカテゴリを除外し、別にブログカテゴリのリンクを設置しよう。

■エントリータイトルをパーマリンクしよう
たとえばメインテンプレートの場合。

<h3 class="entry-header"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h3>

このように、タイトルをパーマリンクへのリンクに変更することは、非常に有益だ。
カテゴリアーカイブも同じように変更しておくと良い。

■カテゴリやエントリーの順番
順番は、標準ではアルファベット順となる。
順序は変えられるが、どのみちソートなので普通に固定順序化は難しい。
エントリーの表示順序は投稿日時なので、この日時を操作して順番を制御するしかない。
ただしこの場合、更新履歴が使えなくなるので注意。(日付がめちゃくちゃになるからね)
カテゴリの場合、カテゴリ名を1.2.3.といった数字を先頭に書いて操作するのが簡単な方法だ。
この場合、CSSでリストの先頭の「・」を削除しておくように。
順番を気にしないならば、何も特に何もしなくて良いだろう。

■メインテンプレートを編集しよう。
標準ばブログ用なので、最新のエントリーが全て表示されてしまう。
なので、普通のサイトっぽくするため、エントリーの表示を消して、普通のサイトっぽく作ろう。

■トップページを普通のサイトっぽくする方法のヒント phpとの併用

標準のテンプレートをちょっといじるだけだと、とてもさびしいトップになりがち。
普通のカテゴリリスト表示しか思い浮かばない?それ以外に何をしようか?
phpが使えれば色々なことができるよ。
phpがまったくわからない人はごめんなさい。

カテゴリ名(もしくはエントリー名)の先頭に、アイコンをつけよう。
これもMTタグとphpの併用で簡単に可能だ。
MTタグでphpにカテゴリ名を渡し、phpでアイコンを埋め込めば良い。
JavaScriptでもできるが、なるべくphpの方が確実でよいだろう。
これで、複数カテゴリの記事一覧を表示した場合、どの記事がどのカテゴリなのかも一目でわかりやすい。
たとえば、こういうときに便利。

記事は、第二カテゴリに登録している。
第一カテゴリで記事一覧を表示。
この時、複数の第二カテゴリの記事がごっちゃに表示される。
記事タイトル名の先頭にカテゴリアイコンがあれば、どの第二カテゴリに属しているのかわかりやすい。
記事のカテゴリは<$MTEntryCategory$>なので、これをphpの変数に渡せばいいだろう。
たとえば

<img src="<?=$icon[<$MTEntryCategory$>]?>">

この場合、$iconの定義はテンプレートで別に定義して、includeして使うと管理が簡単だ。

phpを使えば、アイディア次第でMTの機能を大幅にアップグレードできる。
高機能なHPを簡単に管理するのにもってこいだ。

他には、大きな画像などを使ってスペースを埋めて大きく見せるのもいいだろう。

■テンプレートモジュール
以外と使われないこの機能。
テンプレートメニューにある、モジュール。
これは、CMSに欠かせない機能とも言える。(私は使っていないが・・・)
XoopsなどのCMS系ツールでは必ずあるもので、MTはちょっと低機能だが、使えないことは無い。
これは、ページ内容をブロックで分け、ページに埋め込むというもの。
MTの標準のメインテンプレートは、ずらずら全部書いてある。
もしテンプレートの内容が膨大になっていて、修正する時、この中から修正したい部分をさがすのは一苦労だろう。
通常のサイトの場合、php等で埋め込むのが一般的だが、phpが使えなくてもMTのモジュール機能で同じ事が可能というわけだ。
もしテンプレートの内容が膨大になる場合、使ってみるのも良いだろう。
また、複数のテンプレートに同じ内容を書く場合も、モジュールを利用すると管理が簡単になる。

■スタイルシートテンプレート
標準の設定では、再構築しないと反映されないスタイルシート。
中身を見ると、MTタグは使われていない。すわち再構築するのは無駄な行為となる。
『このテンプレートにリンクするファイル』のところに、『出力ファイル名』と同じファイル名を書いて、『再構築オプション』のチェックを外そう。
これで、保存するだけで適用され、再構築は要らなくなる。

このように、MTタグを使わないテンプレートは全て同じように設定しよう。

再構築の必要が無いので、ローカルで編集してアップロードした場合も、再構築無しに適用となる。

■他、便利な技

大きなサイトは普通、phpなりssiなりのスクリプトでファイルを埋め込む。
1ページを複数のファイルに分けて表示させるのが常識である。
MTでは、モジュール機能を使ってもいいだろう。
全ページ共通である、サイト上位の部分(サイトタイトル部分)と、最下部(コピーライト部分)の部分を別ファイルにするのだ。
こうすることで、1つのファイルを編集するだけで、全ページ適用となる。
ただし、モジュール以外の方法で埋め込んだ場合はMTタグが使えないので注意。
モジュールの場合は再構築が必要で、phpで埋め込む場合は不必要という違いも覚えておこう。

あと、MTの標準ではトップページのみにメニューがあるが、メニューを切り離してメニューテンプレート(もしくはモジュール)を作り、それを各アーカイブに埋め込むのもいいだろう。

 

以上、非常に長いエントリーとなってしまったが、MTでサイト作成ヒントの紹介終わり。


Posted by Nori at 2005年12月 2日 17:04
トラックバックアドレス
http://blog.webmeister-jp.com/mt/mt-tb.cgi/147