Movable Typeのブログ記事概要

メイン / Net・コンピュータ / Movable Type
このブログを作成するのに使用している Movable Typeについてのインストールや設定、カスタマイズ、Tipsなどについて書かれたエントリーが分類されています。 このブログに対してやったことを書いているので、書かれている内容の具体的な結果はこのブログで確認できるはずです。(^^;;

MT4 のテンプレートをカスタマイズ

カテゴリ: Movable Type
|

スタイルのカスタマイズができたので、続いてテンプレート本体にかかりたいと思います。
旧バージョンからは構成もガラっと変わっているようなので、まずは標準構成の解析と把握を行う必要がありますが、いちいちブラウザの編集画面を開いていては効率が悪いので、ファイルとのリンクを設定して、コマンドラインから直接参照できるようにしておきます。

終わったらテンプレートを確認していきます・・・
「メインページ」これがトップのようです。で、「アーカイブインデックス」と、アーカイブテンプレートの方にある「ウェブページ」と「ブログ記事」あたりを弄ればいいようです。
が、構成部品がモジュールに分離されたせいで、ぱっと見は非常にシンプルになっています。実体は、モジュールの方を読まないと把握できないので、ちょっと面倒ですが、複数のテンプレートで共通するような箇所を部品化できるのなら歓迎するべきでしょう。
まず、ヘッダーとフッターというモジュールを見てみます・・・

この2つは、なんか単純に各ページのメイン部分より前と後を、それぞれブツ切にしたもののようです。個人的にはファイル内でタグの対応が完結しないような切り方は感心しないのですが、まぁ単純な include しかないのならとりあえず仕方がないのでしょう。
将来的には Mayaa みたいに レイアウト部分を共通化する方向に進んで欲しいものです。

では、手始めにサイドバーから編集してみることにします。「サイドバー (2カラム)」を編集すればいいようです。このレベルになれば、旧版と (やってることは) そんなに変わらないので、旧版のときと同じ要領で編集します。最終的にはサイドバーは分離して SSI で読み込むようにしたいのですが、とりあえず後回しにします。
実はサイドバーの内容は、画面からも「ウィジェット」として編集できるようですが、始めたときは気づかなかったので、直接手で編集してしまいました。(^^;;;;;;;;;;;;;;

次は、アーカイブインデックス。旧版ではかなりシンプルな内容だったのでカスタマイズし甲斐があったのですが、今回はデフォルトでも結構良い感じです。 MT4 では、カテゴリ一覧がこっちに追加されているようなので、旧版でトップに追加していたカテゴリ情報をこっちに持ってきます。

次は、月別アーカイブとカテゴリアーカイブなのですが、これはデフォルトのテンプレートでは、「ブログ記事リスト」でアーカイブマッピングを2つ作成することで月別とカテゴリの両方を生成しているようです。このやり方は踏襲するとして、さらに旧版でのカスタマイズのように、記事先頭の一部を切り出して並べた概要の一覧も、このテンプレートを元に作成して追加することにします。カスタマイズとしては、パンくずリストや、カテゴリの説明、カレンダーなどを追加することにします。

続いて個別の記事ページですが、アーカイブテンプレート一覧を見るとそれっぽいテンプレートとして「ウェブページ」と「ブログ記事」の2つのテンプレートがあります。たぶん「ブログ記事」の方をカスタムすればいいと思うのですが、では「ウェブページ」は何に使うのでしょう・・・
ちょっと調べてみます・・・ウェブサイトを管理する『ブログ』と『ウェブページ』の使い分け・・・

ふむ。どうやらブログと共通したデザインで静的ページを置くための仕組みのようです。まぁ、ブログとしてしか使わなければ関係なしということでしょうか。

カスタマイズ自体は小幅で、ナビゲーションをいくつか追加するだけです。

最後に、メニューと個別ページのカテゴリ新着を SSI で読み込ませるようにします。
SSI で読み込む部分は、MT 的には普通のページと同じなので、メニューは「メインページ」を、カテゴリ新着は「ブログ記事リスト」をベースに作ることにします。

で、メニュー本体はモジュールに分けられているのですが、SSI ではもう少し根元から切り出すことにします。
フッターの <MTIf name="page_layout・・・の部分を切り出して、メインページ冒頭にある MTSetVar を適当に調整します。
・・・ん? page_layout 変数が、設定されないようです。メインページ決めうちで限定なのでしょうか・・・
まぁ2カラムから変更する気はないので、MTSetVar を追加してごまかします。(^^;;;;

MT4 のスタイルをカスタマイズ

カテゴリ: Movable Type
|

それでは、機能チェックもそこそこに MT4のテンプレートのカスタマイズにかかりたいと思います。

まずは、デザイン (スタイルシート) から・・・と、そういえば、MT4 は、GUI でスタイルが変更できるようになっているので、以前のように単に CSS を変更すれば OK というわけにはいかない気がします。

検索してみると、StyleCatcher という名前の機能になるようです。

リファレンスには情報が無かったのですが、どうやらこのあたりのページを参考にすればいけそうな感じです。
http://www.sixapart.jp/pronet/developers/movabletype/stylelib.html

・・・いろいろ必要そうですが、まぁ、CSS の変更ができてからの話のようです。 (^^;;

なので、CSS を見てみます。
テンプレートから指定されているファイルは styles.css ですが、こいつは base_theme.css と、mt-static/themes/minimalist-green/screen.css の 2 つを読み込んでいるだけのようです。おそらく、GUI でスタイルを変更するとこのファイルが自動変更されるのでしょう。そして、読み込んでいる 2 つのファイルが、それぞれ基本部分と GUI で変更できる部分を分担しているようです。

次にカスタマイズの方針を決めます・・・
MT4に標準でついているスタイルは、どれも 3 カラムが前提なのか 2 カラムで利用するには幅が広すぎる気がします。なので、2 カラムで最適になるように幅を狭くして 3.2 のデフォルトテンプレートのような感じに仕上げたいと思います。

まずは、準備として作業用にディレクトリを作成して、下敷きにする minimalist-green/screen.css と、背景用の画像をコピーしておきます。
で、編集中のスタイルシートが確認できるように styles.css を コピーした方に仮で直接変更してしまいます。再構築すると戻されてしまいますが、まぁ変更したスタイルシートを確認するだけなら再構築は必要ないので問題ないでしょう・・・

では、CSS の変更にかかります。
手始めに、新しいスタイルシートの構成把握もかねて背景の色と画像を差し替えることにします。

旧バージョンのスタイルシートから色コードを拾って、置き換えていきます・・・
これは機械的なので簡単です。

次は、横幅を狭めます。
まず、CSS から width をしている箇所を探します。
・・・テーマの CSS 以外にも base_theme.css にも設定箇所があります。テーマの変更だけで幅が変わるようにしたいので、ベースで指定がある箇所でテーマ側に無い箇所は追加することにします・・・
これも、ある程度は機械的に進めることができます。

幅を詰めると、やはり旧版のように余白は濃い色の背景にしないと間抜けな気がします。あと、サイドのメニュー部分の背景色や見出しの部分の色も変えたいところです。
これは、さすがに HTML のほうの構造を把握しないと厳しい作業です。やはり眺めるだけではつかめないので、適当な箇所の背景を赤くしてみて何処があたるかを確認したりしながら進めていきます・・・

・・・

・・・OK。そこそこ元のデザインに近い感じになったので、管理画面から登録できるようにします。
まず、選択用のサムネイル画像を作成するためにスクリーンショットを撮って、GIMP でサイズを 120x90 と、278x209 に変更して、GIF 形式で保存。thumbnail.gif と、thumbnail-large.gif という名前で CSS のディレクトリにコピーしておきます。

これで準備完了なので、MT の管理画面からスタイルの選択を実行して、(+) アイコンから、URL を指定して追加します。

http://morishoji.homelinux.net/mt-themes/MapleGreen/maple-green.css

さっき作成したサムネイルが表示されました。
選択してみます・・・既に確認用に適用されていたので、ぱっと見は変化はないですが、styles.css は、ダウンロードして保存した方を使用するように変わっているようです。

OK。長くなったので、テンプレートの変更は次回にすることにします・・・

勢いで上げる MT4

カテゴリ: Movable Type
|

ここまでは、割とうまくいったので (当社比) 勢いで MT4 へのバージョンアップに取りかかることにします。

MT の新バージョンは、出ていることはニュースサイトなどで知っていたものの、詳細な内容まではノーチェックなのですが、まぁ新機能は入れて動かしながら確認することにして、とりあえず入れます。(^^;;

まずは、ホームページ から、「ご購入方法」に行き、そこから無償の個人ライセンスでダウンロードします。
ダウンロードが終わったら、ドキュメントを探してインストールにかかります。
Movable Type 4 ドキュメント の「既存環境からのアップグレード」が良さそうです。

今回は、そもそも VMWare 上の仮環境にコピーしたものなので、バックアップは省略することにします。旧バージョンのファイルを削除する指示がありますが、これはディレクトリを変えることで対処します。

次に、mt-config.cgi を、旧バージョンからコピーします。

インストールと設定が終わったので、いよいよ実行です。
・・・といいながら、まずはチキンに mt-check.cgi。問題ないようです。
・・・次は本番。mt.cgi を実行します・・・更新用の CGI が実行されます・・・
OK。デザインが一新された管理画面が表示されます。古いエントリーもちゃんと認識しているようです。

テンプレートも移行されているようなので、とりあえず再構築してみます。
・・・なんかエラーがでます。メッセージを読むと「このタグはここでは使用できない」というような内容です。バージョンが上がってチェックが厳しくなったのでしょうか・・・

うーむ。ちょっと面倒そうです。
とりあえず、新バージョンの機能を見たいので、一旦自動移行されたテンプレートは捨てて、初期化してみることにします。
・・・「テンプレートを初期化する」を実行してみますがエラーが消えません。どうやらエラーが出るテンプレートは、カスタム扱いになっていて、初期化では切り離されないようです・・・
しかたないので、移行されたっぽいテンプレートを削除してみます。
・・・エラーは出なくなりました。サイトを見ると見慣れないデザインで、自分のブログが表示されています・・・どうやら OK なようです。

新バージョン、ちょっと探検してみることにします。

ブログにタグが設定できて、タグクラウドとかいうものが表示できるようになっているようです。管理画面では GUI からスタイルを変更できるようです。デフォルトのテンプレート構成もがらっと変わっています・・・

これだけ機能が増えて構成が変わっているのだと、旧テンプレートのエラー箇所を修正して移行するよりも、新テンプレートをベースに再度修正を施した方が良さそうな気がします。

・・・ちょっと、時間をかける必要がありそうです。

Movable Type と MySQL

カテゴリ: Movable Type
|

続いて、大物 Movable Type にかかります。
単に移動するだけなら、コピーするだけなのですが、今回は、この機会に Version 4 への変更と、DB の MySQL への変更も行ってしまうことにします。

まず、第一段階として、今のバージョンのまま新環境にコピーします。
静的なコンテンツと生成されたコンテンツは、Apache の作業のときにコピーが済んでいるので、残りはプログラム本体とデータベースになります。

コピーができたら、とりあえず mt-check.cgi を起動してみます・・・

一応、OK ですが、いくつかオプションの Perl モジュールが入っていないようです。
この際なので入れておくことにします。
手順としては、まず、apt-cache search で Debian のパッケージを探し、みつかれば apt-get で、無い場合は、下記の要領で CPAN からインストールします。

# perl -MCPAN -e shell
CPAN> install モジュール

・・・CPAN からのインストールは、コンパイルしてテストもするので、結構時間がかかります。
が、インストール自体は問題なく終わったので、再度 mt-check.cgi で認識されたことを確認してから、mt.cgi にアクセスしてログインします。

・・・OK。
DB から読んで出しているところも特に問題ないようです。

続いて、公式ページの手順を見なが DB を MySQL に変更していきます。

まずは、apt-get で、MySQL をインストールし、そのあと root ユーザにパスワードを設定します。

# apt-get install mysql-server
# mysqladmin -uroot password XXXXXXX

続いて MySQL に Movable Type 用のデータベースとユーザを作成します。

% mysqladmin -uroot -pXXXXXXX create mt
% mysql -uroot -pXXXXXXX
mysql> grant select,insert,update,delete,create,index,alter on mt.* to mtuser@localhost id
entified by 'XXXX';

MySQL に作成したユーザ情報を mt-config.cgi に設定します。

ObjectDriver DBI::mysql
Database mt
DBUser mtuser
DBPassword XXXX

これで準備完了なので、ブラウザから mt-db2sql.cgi を実行して、コンバートを実行します・・・

・・・OK。問題なく終わったようです。
・・・mt.cgi で管理用画面にアクセスします。
・・・特に問題はないようです。まぁデータの置き場所が変わっただけなので、うまくいってしまえば、なにも変わらないのは当然なのですが、本当に MySQL の方を見ているのかが若干不安になったので、念のため mt-config.cgi から、Berekely DB の時の設定をコメントアウトしてみます・・・大丈夫なようです。

次回は、Movable Type のバージョンアップにとりかかることにします。

スパムと闘う・TB編

カテゴリ: Movable Type
|

なんか金曜日ぐらいから、すごい勢いでトラックバックスパムが来るようになったので、急遽トラックバックスパム対策を見直しました。

Movable Type の 3.2 は、強力なスパム防止機能が最初からついているのですが、強力すぎて、問題のなさそうなものまでブロックしていたので、しばらく緩めの設定にしていたのですが、今度は緩め過ぎて、ウザい英語のスパムまで通してしまうようになって、昨日・今日と山のようなスパムの削除をするハメになったのでした。 orz

仕方ないので、たまったスパム TB を、MT の管理画面で見て、迷惑度を確認していき、閾値なんかをちゃんと考えることにします...

見直しのポイントはこんな感じです。

(1) TBの送信元とブログを公開している IPアドレスが違っているのは、設定でチェックしないようにする。
(2) 山のように来たスパムから NG ワードを拾って登録する。
(3) 迷惑トラックバックの判断基準は 0 に戻す。

最初に、TBの送信元とブログの IPチェックをやめさせます。
プラグインの設定で「SpamLookup - Lookups」の設定を表示させて、「トラックバックのチェック」を「設定しない」にします。(ここを「設定しない」にしても、ブラックリストやキーワードチェックには影響しません)

保存してら、次に、キーワードフィルタに以下を追加します。

  buy
  sex 4
  porn 4
  viagra 4
  ringtones 4

最後に「コメント/トラックバックの受信設定」で、迷惑トラックバックの判断基準値を「0」に戻します。

今も、スパムは続いているようですが、ちゃんとフィルタが効いて、通知メールも来なくなって、やれやれです。

落ち着いたところで、今週来たスパムTB の UA を集計してみたら、こんな感じになりました。(先頭の数字は回数です)

      1 "Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)"
      1 "Mozilla/4.0 (compatible; MSIE 4.0; MSN 2.6; Windows 95; Gateway2000)"
      5 "Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)"
      2 "Mozilla/4.0 (compatible; MSIE 5.01; Windows 95; USA On-Site)"
      1 "Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)"
      2 "Mozilla/4.0 (compatible; MSIE 5.01; Windows 98; 981)"
      5 "Mozilla/4.0 (compatible; MSIE 5.01; Windows 98; QXW0332q)"
      3 "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
      3 "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; DT)"
      2 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"
      3 "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.7) Gecko/20011221"
      3 "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.9) Gecko/20020311"
      2 "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530"
      4 "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0rc1) Gecko/20020417"
      6 "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0rc2) Gecko/20020510"
      1 "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0rc3) Gecko/20020523"
      2 "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826"
      4 "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1a) Gecko/20020611"
      1 "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020721"
      4 "Opera/5.02 (Windows 98; U) [en]"
      3 "Opera/6.01 (Windows 98; U) [en]"
      2 "Opera/6.01 (Windows ME; U) [en]"
      2 "Opera/6.02 (Windows 2000; U) [en]"
      1 "Opera/6.03 (Windows 2000; U) [en]"
      2 "Opera/6.04 (Windows 2000; U) [en]"
      2 "Opera/6.04 (Windows 98; U) [en]"
      2 "Opera/6.04 (Windows XP; U) [en]"
      2 "Opera/7.0 (Windows 2000; U) [en]"
      6 "Opera/7.0 (Windows NT 5.0; U) [en]"
      3 "Opera/7.02 Bork-edition (Windows NT 5.0; U) [en]"

当然偽装なんでしょうが、IE はともかく、Mozilla と Opera のシェアが大健闘です。(^^;;;;;

Gateway2000バンドル版(?) IE 4.0とか、Opera/7.02 Bork-editionとか、微妙にマニアックなところが混じっているのが面白いんですが、スパムツール作者の趣味なんでしょうかねぇ... (^^;;;;;;;

ぱっと見、4年ぐらい前な感じで、このころはブログもはやってなかったと思うんですが、スパムツールはこのころに作られたモジュールとかツールを流用して作られたんでしょうかね。

変に興味が尽きない感じです。(^^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MT3.2-ja-2 MTDate utcバグってますね

カテゴリ: Movable Type
|

Movable Type 3.171日本語版で、「MTDateにutc="1"オプションを与えた場合に2回オフセット補正されてしまう不具合を修正しました。」
てのが、ありましたが、3.2-ja-2では、「MTDate utc="1"を与えても無視される」という新たなバグが作り込まれてますね。orz

3.171のときのパッチを参考にコードを追ってみたら、
ContextHandlers.pmの _hdlr_sys_dateの中で、「local $args->{utc};」をやっているのが原因のようでした。
# Perlで localすると、localしたとき変数は undefに変更されます。

なので、

local $args->{utc};
if ($args->{utc}) {

my $is_utc = $args->{utc};
local $args->{utc};
if ($is_utc) {

みたいに直せば OKですね。

Google Sitemapsに登録

カテゴリ: Movable Type
|

このサイト Google Sitemapsに登録しています。
Google Sitemapsは、ページの更新情報や更新頻度を XMLで記述し、そのファイルを Googleに登録しておくことで、Goolgeの巡回を(ある程度)制御させるもので、登録したのはずいぶん前(1月の終わりぐらい)なのですが、やっと効果が見えてきた気がするので、この辺で記事にしてみようと思ったわけです。

Google Sitemapsに登録してみた理由は3つあります。

1つめは、なるべく多くのエントリーが Googleで検索可能になって欲しいということです。まぁこれは、ブロガー共通の望みでしょう。

2つめは、今後ページが増えたとき、ロボットの周回頻度が適切なものになって欲しい。ADSLで細々やっている自宅サーバですし、他所からのアクセスとはいえ、制御できるのなら無駄なアクセスは可能な限り最適化したいのが技術屋でしょう。

3つめは、純粋に技術的な興味。面白そうだから。(^^;;;

Google Sitemaps用の XMLファイルは、Movable Typeのテンプレートを記述すれば、Movable Typeに作成させることが出来るようです。

テンプレートも XMLも難しくないので、「絵文録ことのは」の グーグル・サイトマップ FAQとプロトコル全訳などを参考にして若干アレンジします。

といっても、
トップに「<changefreq>daily</changefreq>」を、
エントリーアーカイブに「「<changefreq>never</changefreq>」を追加した程度ですが。

XMLが作成できたら、Googleにアカウントを作成して登録します。

ただ登録は自体はすぐ出来るのですが、登録を受けて Googleのロボットなどの挙動が変わるのには数日かかるようで、さらにサイトマップを受けてページがインデックスされるまでは2ヶ月ぐらいかかりました。(登録したときは、まだこのサイトは Googleに定着していなかったというのもあるのかもしれませんが)

今(3/17現在)、Googleで「site:morishoji.homelinux.net」でサイト内の全ページを検索すると、44件ヒットします。現在エントリー数が 35件ですから、かなりのカバー率になったような気がします。満足です。

インデックスされるページを増やすだけでなく、検索クエリの情報など、Googleが押さえている興味深い情報も参照できるようになるので、結構お勧めな感じです。

ブログの動線をスムーズに

カテゴリ: Movable Type
|

週末は新規エントリー作成ではなく、テンプレートの修正などして、ブログのナビゲーションメニューの追加などをしていました。

基本的には検索や更新情報などで「たまたま立ち寄ってくれたひと」に、引っ掛かったページ以外のほかのページも見てもらうにはどうすればいいかということを、あれこれ考えながらテンプレートをいじっていた訳です。

最初に訪れたページから他のページを見てもらうためには、他のページへのリンクを置かなければなりませんが、何処に何を置くのが効果的でしょうか?
自分が「たまたま立ち寄ってくれたひと」だったらと仮定して考えて見ることにします...

まず、立ち寄ってくれたひとは「書かれたエントリーの内容に興味を持って来てくれた」と思うので、まず「本文を読む」というのが最初に取る行動だと思われます。
つまり、そのサイトの構成とか他にどんなことが書かれているかなどは、本文を読み終わってから考えるのではないかと思う訳です。

これがよくある心理だとすれば、本文が終わったあたりに、他のページへのナビゲーションを置くのが効果的ではないかと考えられます。

これに従い、個々のエントリーページにナビゲーションセクションを追加します。
このナビゲーションセクションには、そのエントリーのカテゴリー一覧へのリンクと、そのエントリーの投稿月のアーカイブへのリンク、前後のエントリーと、新着エントリーという名目でトップへのリンク。及び全エントリー一覧へのリンクを置きます。

さらに月やカテゴリーアーカイブなどにも下に、似たようなナビゲーションを作成していきます...

続けてナビゲーション以外で効果がありそうなことを考えます。
私のブログは、カテゴリーを意識して書くことが多いので、来訪者をカテゴリーアーカイブに誘導できれば、他のエントリーも読んでくれる気がします。
でも、Movable Typeが初期作成するテンプレートは、あまりカテゴリーを重視していないようで、カテゴリーアーカイブを表示させない限り、そのエントリーがどのカテゴリーかすら分からない状態です。

これでは、カテゴリーアーカイブを見てくれる可能性は薄そうなので、とりあえず、個々のエントリー表示部分などでも所属するカテゴリーを表示させて、カテゴリーアーカイブへのリンクを設置してみます。

さらに、トップページの最後に「カテゴリーの説明」として、各カテゴリーの説明と分類されているエントリー数、最後に投稿されたエントリーの情報を表示させるセクションを追加します。実際のところ、今ぐらいのエントリー数では、どれぐらいのひとがカテゴリー情報まで移動して目を通してくれるかはちょっと謎な気もしますが、今後エントリーが増えてくれば、重要になってくるのではないかと期待しています....

最後に付けて頂いたコメントの扱いを改善します。
初期状態では、頂いたコメントは、コメントの付いたエントリーページのみでしか読めないのですが、それではせっかくコメントしてくれたひとに申し訳ないので、全てのページに表示される右メニューに新着コメント 3件の情報を表示するとともに、トップページに、掲示板風の新着コメント表示セクションを置いてみます。

その他、月のアーカイブにカレンダー表示を追加したりとか、土日の休みをつぎ込んでカスタマイズしただけに、細かいのも入れればここに書ききれないぐらいの修正を加えてしまいました。(^^;;;;;;

まぁ仕事でやってる訳でないので、効果なくても自分が「orz」だけで済むのですが、やっぱり効果が出て欲しいところではありますね...

Movable Typeのデフォルトでは、カテゴリーアーカイブや月ごとのアーカイブは、全ての記事を、単にそのまま並べただけの構成になっています。この構成だと量が増えたときに見通しが悪いので、一覧的な画面をテンプレートのカスタマイズで作成してみることにします。

とはいったものの、今までやってきたテンプレートのカスタマイズは固定の CSSやHTMLの箇所の修正だったり、既存テンプレートからのコピペだけだったので、テンプレートの文法まで踏み込んで調べたことはありませんでした。Googleで探すと HOWTO系のページはいくつか HITするものの、個人的に満足出来るページが見つからなかったので、諦めて公式リファレンスを読むことにしました。

・・・基本的にテンプレートの変更は、データを展開して HTMLを作成するときの制御情報や置換情報を記述するために追加された独自のタグを理解すれば出来そうです。タグの数は結構あるみたいですが、元になるテンプレートがあればそんなに難しくもなさそうです。

やることが把握出来たら作業にかかります。

修正の方針は、アーカイブ画面は一覧化ということで検索サイトの検索結果ライクな画面し、元の全てのエントリーが並ぶ画面は一覧画面に「全てのエントリーの内容を表示」といった感じのリンクを設置することにします。

最初に、元の日付とカテゴリーのアーカイブテンプレートをコピーして、新たに「一括表示アーカイブ」というテンプレートとして保存しておきます。次にアーカイブのテンプレートを一覧化します。MTEntriesタグで囲んでエントリーを列挙する基本は変わらないので、その中を変更していきます。

最初にタイトルにパーマリンクを設定して表示させます。
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>

タグの中にタグが入れ子になるのが、ちょっと気持ち悪いですが、そういう仕様なので、しょうがないです。(^^;;;;;

続いて、本文の最初の何文字かだけを表示させます。
<$MTEntryBody convert_breaks="0" words="100"$>…

その後に、日付とコメント、トラックバックの情報表示をコピーしておきます。

最後に、適当に divタグで囲って、classを付け、CSSでスタイルを設定します。

テンプレートの修正が出来たら、GUIから Movable Typeに登録されている内容を更新します。ついでに、テンプレートを WWWから /mt-template/ で参照できるように「リンクするファイル」も設定します。(特にアクセス制限はかけていないので 実際のテンプレートを Hackしたい方はご自由にどうぞ...)

テンプレートの登録ができたら、次は Movable Typeが両方のテンプレートを使用するように設定を変更します。システムメニューの設定から公開の設定を開き、下のほうにあるアーカイブマッピングに、一括表示用のテンプレートのマッピングを追加します。

「マッピングを新規作成」をクリックして、「カテゴリ」と「月別」のアーカイブを、新規に登録したテンプレートを指定して追加します。追加できたら「出力フォーマット」を「カスタマイズする」で変更します。月別は、「%y/%m/show_all.html」カテゴリは「%c/show_all.html」にします。これで、一覧の方のアーカイブと同じディレクトリに show_all.htmlという名前で全表示の HTMLが作成されるので、一覧表示のテンプレートの MTEntriesのループの前に、show_all.htmlへのリンクも追加しておきます。

終わったら再構築を実行してサイトに反映します。
後は、納得いくまで調整と構築の繰り返しです...(^^;;;;;;;;;;

アーカイブ系画面にもメニューを表示

カテゴリ: Movable Type
|

エントリーもだいぶん増えたので、この辺でテンプレートをいじってのカスタマイズに取りかかってみることにします。

デフォルトの Movable Typeのアーカイブ・テンプレートは、メニューのない「1カラム構成」になっています。今はトップページしか検索にヒットしないので問題ないのですが -- ヒットしないのはそれはそれで問題なのですが -- 今後、直接アーカイブページに飛び込むケースが増えてくると、よほど暇なひとで無い限り、他のページを見ようと思ってくれない気がします。これは、営業的にはよろしくありません。(^^;;;;;;
というわけで、やりたいことはいくつかあるのですが、まずはアーカイブ系の画面にも、右にメニューを表示させる変更に取り組むことにします。

変更が必要な場所を把握するために、とりあえずメニューの付いているメインページと、付いていないカテゴリー・アーカイブのテンプレートを比べてみます。

・・・スタイルシートを全ての HTMLで共通に使用するためか、DOMの構造は似ているようです。

詳しく見ると、bodyの classが、"layout-one-column"が "layout-two-column-right"になるのと、id="beta"で区別されるメニュー用の divが有るだけのように見えます。

お、これなら楽勝?と思い、各テンプレートを "layout-two-column-right"対応に変更していきます。
で、再構築。ちゃんとメニューが付いています。めでたしめでたし...

と思いきや、これだけでは、どうやら新規にエントリーを投稿したとき全部再構築しなおさないと、古いアーカイブのメニューが更新されません。OpenBlockSは、ただでさえ遅いのでちょっと許容できない問題です。(でも、だからデフォルトはメニューなしなんでしょうね。ちょっと納得してしまいました)
でも、こんなところで挫折しては技術屋の名折れです。方法を考えます。解決策として、温故知新で SSI(Server Side Include)を併用してみることにしました。

具体的には以下のようにします。

(1) インデックス・テンプレートとしてメニュー部分(div id="beta")だけを切り出したテンプレートを新規に追加する。(menu.htmlとする)
(2) アーカイブ・テンプレートからは SSIの include機能を使用して、最新の menu.htmlをメニューの場所にリクエスト処理時に取り込む。

まず、Apacheの SSI機能を有効にします。

例によって、Debianではインストールされているものの有効にはなっていないので「a2enmod include」で有効にします。
次に、ブログを展開するディレクトリに「Options +Includes」を追加して、SSIを有効にします。
さらに、SSIを使用するファイルの識別を実行ビットで行わせるための「XBitHack full」も追加します。(メニューの更新のためにキャッシュを無効にするのもどうかと思うので、fullを指定して更新日付を扱うようにしています)

Apacheの設定が終わったら、Movable Typeが作成する HTMLで SSIが有効になるように mt-config.cgiのコメントになっている以下の行を有効にします。(これで実行ビットが ONになります)

HTMLUmask 0022
HTMLPerms 0777

最後に、インデックス・テンプレートとしてメニュー部分(div id="beta")だけを切り出したテンプレートを新規に追加し、アーカイブ・テンプレートのメニュー部分を「 <!--#include virtual="/menu.html" -->」で、SSIを使用して読み込むように変更し、終わったら再構築して確認します...

新規エントリーを追加してからでないと、厳密には確認できないですが、仕事でやってるわけではないので、今までのページがちゃんと出れば、とりあえず OKとします。 (^^;;;;;;;;

MT4iインストール

カテゴリ: Movable Type, お知らせ
| | トラックバック(1)

携帯から見れないという指摘が某友人からあったので、MT4iをインストールしてみました。

確認は、WX310Kで行っていますが、MT4iの説明によれば、キャリアによらずアクセス可能のはずです。

URLは http://morishoji.homelinux.net/mt/mt4i.cgiになりますが、QRコードが使える方は、右メニューの QRコードでアクセスできます。

なお、PerlのCGIなので、openBlockSではページが表示されるまでに 5~10秒ぐらいかかります。
気長に待ってください。(^^;;

(3/2 メニューからリンク設定にあわせて記述を追加)

オープン前夜

カテゴリ: Movable Type
|

ほとんど初期状態のままですが、一応ブログが動くようになりました。
コンテンツも無いのにデザインに凝るのはどうかとは思うのですが、自分のブログなんだから、ちょっとは好みのデザインにしたいのも人情というものです。(^^)
そういえば、これまでMovableTypeを操作した範囲では、デザインの調整をするための機能というのを見た記憶がありません。デザインが変更できないというのはありえないと思うので、例によって、ちょっと Googleで検索してみます。

・・・どうやら、GUIで簡単にデザインを調整するような機能はなく、CSSや HTMLテンプレートを直接編集する必要があるみたいです。
私も一応 Webアプリケーション開発で給料もらっている身ではあるので、それくらいの作業で怖気づくつもりはないですが、MovableTypeが作成する HTMLの DOM構造を調べて CSSを修正しながらデザインを調整するとなると、まじめにやっても数日はかかりそうです。
正攻法についても、いずれは取り組んでみたいと思うものの、今はオープンすることを優先させたいので、短時間でやっつけられる方法を検討します。
結論としては、今回はレイアウトなどには手をつけず、単純に色と背景画像を調整するのみで妥協することにしました。それでも、CSSを直接編集して、思った色味にするのは、神業以外のなにものでもありません。私は当然そんなスキルはないので、今回は Linuxでは定番ツールである GIMPの Windows版を作業で使用しているノートPCにインストールしてやることにしました。

まず、Windows版 GIMPをダウンロードするのですが、Vectorにあるものは、バージョンが古そうなので、http://gimp-win.sourceforge.net/から、最新の安定版(2.2.10)と、実行に必要な GTK+2.8.9を落とします。(ダウンロードサイトは英語ですが、国際化されているのでセットアップで日本語を選択すると日本語になります)
インストールして GIMPが起動できたら、ファイルメニューの新規作成を選択して空の編集画面を開きます。その画面にブログの画面を PrintScreenキーでコピーしたものを貼り付けることで、GIMPで画面イメージを編集できるようにします。
貼り付けが出来たら、色味を調整するために、レイヤーメニューから「色 → 色相-彩度」を選択して調整ウィンドウを表示します。ウィンドウが開いたらプレビューを ONにして、適当にグリグリいじりながら画面が気に入った色になるように調整していきます。
色味が決まったら、次は背景画像を置いてみます。メインウィンドウの「色による領域選択」のアイコンを押した後、画像を貼りたい部分をクリックして領域を選択します。思った場所が選択できたら、今度は「色やパターンで塗りつぶす」アイコンを押した後、パターン塗りをチェックして、選択した領域を使用したい画像イメージで塗りつぶします。うまく塗れたと思ったら、「選択」メニューから「なし」を選択して領域選択を解除して確認します。(うまくいってなかった場合は、Ctrl-Zでアンドゥしてやり直せます)
デザインがまとまったら、「画像から色を選び出す」アイコンを押して色を調べていき、元のデザインと新しいデザインの色の変換表を作成します。
最後にスタイルテンプレートをエディタにコピーし、変換表にあわせて色を置換します。
さらに画像を貼るべき色を検索して、色の指定の後に「url("画像ファイル名")」を追加することで背景画像を指定します。(画像が読み込めなかったことを考えて色の指定も残します)
以上の作業でスタイルの編集が出来たら、MovableTypeに登録して再構築した後、ブラウザで確認します。

デザインが FIXしたので、いよいよオープンです。
最初にテストもかねてオープンのお知らせを投稿してみます。
OK。問題なさそうです。といっても、このままでは誰も見に来てくれないので、とりあえず最初に某先輩のサイトの掲示板に挨拶を兼ねて宣伝させてもらいに行くことにします...

探検 MovableType

カテゴリ: Movable Type
|

MovableTypeにログインが出来るようにようになったので、さっそくブログの設定にかかります。
まず、自分の IDが Melodyなのをなんとかしたいのですが、普通あると思われる「ユーザ登録情報の変更」のようなものがメニューにありません。出来ないはずはないのですが、ちょっと分かりにくいです。
調べると、システムメニューにある「投稿者」というのが、MovableTypeにログインするための IDの管理であることが分かりました。
最初「投稿者」はコメントなんかの投稿者を管理する機能だと思ったので深く調べなかったのが敗因でした。orz
さらに、右上に「現在のログイン名」として出ている IDがクリッカブルになっていて、これを押すと直接変更画面に行けるということに、このエントリーを書くためにマニュアルを見直しているときに気づきました。orz
ともかくユーザ情報を自分情報に変更できたら、ようやくブログの方ににかかれるのですが、こちらも「My First Weblog」という名前でなにやら初期登録されています。まぁこれを変更して使えということなんだろうと思い、変更するためにシステムメニューの「ブログ」で表示される一覧から「My First Weblog」をクリックします。が、編集画面ではありません。
調べると、設定画面はメニューの「設定」の下にあるようなので、クリックして表示させます。
ざっと見る限り、とりあえずブログ名と説明ぐらいを変更すれば、あとはデフォルト値のままでも問題なさそうなので、変更して保存します。
保存すると「再構築して下さい」と表示されたので、再構築を試みたのですが、エラーになってしまいます。orz
どうやらローカル・サイト・パスというのが設定されていないといけないようです。確かに設定した記憶もないので、もう一度設定画面を開けて見ますが、そんな項目はありません。orz
ここではないとすると、どこでしょう?
ネットを調べると「新しいウェブログの作成」を選択すると、作成時に入力することが出来るようです。でも、変更の仕方が分かりません。orz
結局、初期登録されていたブログは削除して、もう一度新規に作成してしまいました。(後日、メニューの後ろの方にある「公開」というところで設定可能であることが分かりました...orz)
ともかく、最低限必要な項目は設定出来たので構築してみます。例によって、OpenBlockSなので、ちょっと時間がかかりますが、一応エラーは出ないようです。
画面の方で処理が終了した旨の表示が出たので、telnetセッションから DocumentRootである /var/wwwを lsしてみます。
確かに、いくつかファイルが作られているようなので、ブラウザからアクセスしてみます。
今まで、「Index of /」だったのが、空っぽではあるものの、ブログらしい画面に変りました。
どうやら成功したようです...

MovableTypeにとりかかる

カテゴリ: Movable Type
|

fetchmailによる DIONに着信したメールの定期的な取り込みと、ISO-2022-JPのメールだけ -- それ以外はだいたいスパムだから -- を WILLCOMの携帯メールアドレスに転送するスクリプトを仕込めば、メール関係の設定も終わりです。
次は、「OpenBlockSを買ったらやろうと思っていたこと」の最後、BLOGシステムの構築に取り掛かります。

さて、リアルで私を知る人は、私が BLOGシステムを使うことを意外に思うかもしれません。「○○(本名)さんって Emacsで直接HTML編集するひとだと思ってた~」という声が聞こえてきそうです。(^^;;;;;
私もその声を否定する気はないのですが、今回は巷で話題の BLOGというやつの真相に近づいてみたいと思い、なにごとも経験ということで、これを機会に設定して使ってみることにしたわけです。

導入理由がそんな感じなんで、使うプログラムも私には珍しく、超メジャーどころの MovableTypeを選択します。
実際、MovableTypeは、無償の限定個人ライセンスもあるものの、基本的に商用のソフトで、ダウンロードも TypeKeyとかゆうものに登録しないと出来なかったりと、結構不自由なのですが、反面、プログラムはほとんどPerlで書かれていて、いろいろ改造できそうだったりと、ちょっとアンバランスな感じです。

インストール作業も商用アプリのように、インストーラ一発ということもなく、むしろ、ほとんど apt-getで済む Debianパッケージより面倒で、結構あちらこちらを参照しながら行うことになりました。(でもここに残したくなるほど難しかったこともないのが微妙なところ)
書いておくことがあるとすれば、途中DBを選択する箇所があるのですが、OpenBlockSのパワーを考えて Berkeley DBにしたぐらいです。
インストールが終了したら mt-check.cgiを動作させてチェックします。
OKになったら、次にログイン画面を表示させ、IDとパスワードを入力して管理画面に進みます。

・・・ あれ?そういえば IDとパスワードはなんでしょう?初期アカウントを設定する場所はありませんでした。
試しに空欄とか、admin/adminとか考えられるパターンをいくつかやってみますが、うまくいきません。
インストール作業のとき参照した FAQの「Movable Typeの新規インストール」というドキュメントも『「ログイン画面」が表示されます。これでインストールは終了です。お疲れ様でした。』で終わっていて最初のログインには触れられていません。しょうもないところで困ってしまいました。
いろいろ sixapartのサイトを探すと、ちゃんとしたマニュアルもあったので、それを見てみると、初期ID/パスワードは、「Melody/Nelson」だそうです。
うーん「誰だよ、それは」って感じです。(^^;;;;;;;;;;;;;;
--
ともかく、初期IDとパスを入れてログインします。
かなり重いもののログインに成功し、管理画面と思しきページが表示されます。
管理画面は出たものの、まだ、この画面で何が出来て、何をしなければならないのかも把握出来ていないのですが、とりあえず私は Melodyという柄ではないので、これを変更するべく方法を調べることにします。(^^;;;;;



ナビゲーション

最近のコメント


最近のコメントを表示...
Powered by Movable Type 7.1.1