ブログ業界標準とも言えるMovable Typeがバージョンアップした。
日本語版では初の大型アップデートとなる。
システムが一新され、様々な機能に対応できるようになったようだ。
目指すはブログツールという小さな枠組みではなく、CMSツールとしてあらゆるサイトを手軽に作れるようにするのかもしれない。
その手始めが今回のMT4というわけだ。
MT4で新たに加わった機能で一番嬉しいのは、画像ファイル管理システムだろう。
MT3ではこれがなく、非常に不便であった。アップロードされたファイル一覧が表示され、ワンクリックで挿入ができる。
これに劣らず嬉しい機能も加わった。編集中の記事を自動で保存する機能。
記事作成中に間違えて消してしまっても安心というわけだ。
実は私は、よくボタンを間違えて全消去してしまうことがよくあった。やっと救われる。
次に嬉しいのは、特に初心者にはうれしいWYSIWYGエディター搭載。
WYSIWYGエディターとは、ワープロ感覚で文章レイアウトを書き込める機能である。
いまどきワープロといっても分からない人も多いかな。タグを書く必要がなく、ボタン操作でレイアウトを操作できると思えば良いだろう。
裏で自動的にHTMLへ変換してくれるというものだ。
次に嬉しいのは、プレビューがまともになったこと。
実際に公開した場合のレイアウトがどうなるかが表示されるようになった。
今までは、簡易プレビューであって、表示されるレイアウトは実際と異なっていた。
CMSとしては、どこまでサポートされているかは不明なので省略。
公式サイトの説明ではCMSをアピールしてることから、これから便利になる気がする。
CMS(コンテンツ・マネージメント・システム)とは、簡単に言えばサイト管理機能。
ブログという使い方にこだわらず、あらゆるサイトの構築をサポートする機能である。
すなわち、MTでブログではなく、普通のサイトを作るということである。
今までのMTでもCMSとして使ってる人も多いが、本来の使い方ではないため面倒で、機能も不十分であった。
ということで、バージョンアップを検討中。
コメント&トラックバック対策をしてから長らく”放置”した結果、かなり有効と判断。9割以上はカットできている模様。これだけカットできれば、残るたまに来るスパムはたまに消せば良いだけかな。
こういったスパム対策が広まると、今度はスパム対策の対策をしたスパムが来るようになる。ちょっとややこしいかな。そのために、やり方は公言しないようにと言われてきている。スパムの99%以上は海外からと思えば、おのずとやり方は見えてくるだろう。そして今ではMovableTypeの公式サイトからプラグインをダウンロードできるようになっている。
このプラグインは使った事無いが、おそらく私が導入しているのとほぼ同じだろうから、海外からのスパムに困っている人は導入すると良い。
しかしやはり、対策が広まってきたためか、気が付く外人も増えてきている。久しぶりにコメント一覧を見たら、そこそこスパムがきていた。でも対策前に比べれば遥かに少ない量だ。たとえイタチゴッコであっても、目に見えて効果があれば良しだろう。
増えてきたらさらに制限を厳しくしなくてはと思ったが、その前にアーカイブのテンプレートを直さなくては。表示がすざましく壊れている。
Movable Type
(以後MT)とは、ブログツールの一つで、ブログを管理するために作られたソフトだ。
広告無しのブログの大半は、MTでブログを作成していると思っていいだろう。それだけメジャーで人気のあるブログツールである。
このMTは、無料で使えて、もっとも高機能なブログツールである。
有料ライセンスもあるが、個人で使う場合のほとんどは無料で大丈夫なはずだ。
(条件:1サーバーのみ。投稿者一人。個人サイト。他は全機能使用可能)
CMSとは、コンテンツマネージメントシステムの略で、簡単に言えば、サイトを作成管理するツールのことである。
ブログツールは、CMSの中でブログに特化したツールだが、だからといってブログにしか使っちゃいけないことはない。
普通にCMSとして優れた潜在能力がある。
では、MTを使って高機能な普通のサイトを作るヒントを紹介しよう。
対象は、最新のMT3.2以降である。(3.2から仕様が大きく異なっているため)
一気に紹介するから、ちょっと長いよ・・・・・。
MTはCGIで作られているため、CGI対応のサーバーに限られる。
マニュアル通りにインストールしよう。
大抵は、アップロードして、CGIファイルの属性を実行可能にセットするだけだ。
以下の説明は、実例をお見せできないので、ちょっと分かりにくいかもしれないがご勘弁を。
他の私のサイト(秘密)で使っているテクニックになる。
■ナビゲーション(パンくず)の設置
MT標準のテンプレートでは、各ページの上に
『前のページの名前 メイン 次のページの名前』
というように、ナビゲーションリンクが表示される。
ただのブログではこれで良いのだが、普通のサイトを作りたい場合、これは問題である。
今どのカテゴリを表示しているかの道しるべを表示すると便利だ。
大手サイトでよく見かける。
『メイン > 第一カテゴリ名 > 第二カテゴリ名 > 表示しているカテゴリ名』
これを俗に『パンくず』と言う。
こうすることで、サイト観覧が非常にスムーズになるだろう。
やりかたは、テンプレートの各アーカイブに記述すればよい。
・カテゴリーアーカイブ
<a href="<$MTBlogURL$>" title=""<$MTBlogName$>"メインページへ">メイン</a> >
<MTParentCategories exclude_current="1"><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a> >
</MTParentCategories ><b><$MTArchiveTitle$></b>
・エントリーアーカイブ
<a href="<$MTBlogURL$>" title=""<$MTBlogName$>"メインページへ">メイン</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でサイト作成ヒントの紹介終わり。
このブログをバージョンアップせず、新たなコンテンツを最新MTで管理する事にした。
そこで問題になるのが、MySQL使用時のテーブル名衝突。
MTが使うテーブル名は、新旧ともにmt_からはじまる名前なので、これを変えてやらねばならない。
やり方はいたって簡単。
全ファイルのmt_を別の文字に置換すれば良い。(大文字小文字を区別するよう注意)
手作業でやっていたら何時間もかかってしまうので、適当なツールで行おう。
私はEmEditorでこれを行った。
次に、そのまま普通にインストール作業となる。
インストールが完了し、管理画面に入れるようになったら、まだやることがある。
このままではデーターベースは何故か壊れている状態なので、最初期を行う。
『ウェブログの設定』を開き、そのまま保存を選び、再構築。
これで全てが機能するはずだ。
なお、この改造は自己の責任に置いてやること。
| ( ! ) Warning: include_once(URL) [function.include-once]: failed to open stream: No such file or directory in /home/webmeister/public_html/blog.webmeister-jp.com/movabletype/index.php on line 0 | ||||
|---|---|---|---|---|
| Call Stack | ||||
| # | Time | Memory | Function | Location |
| 1 | 0.0162 | 112808 | {main}( ) | ../index.php:0 |
| ( ! ) Warning: include_once() [function.include]: Failed opening 'URL' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /home/webmeister/public_html/blog.webmeister-jp.com/movabletype/index.php on line 0 | ||||
|---|---|---|---|---|
| Call Stack | ||||
| # | Time | Memory | Function | Location |
| 1 | 0.0162 | 112808 | {main}( ) | ../index.php:0 |