印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType MT 2.661 で MT4i 3.1

携帯電話からアクセスしてくれる人があるようなので MT4i を導入する。Movable Type 2.661 用に少し改造。

■ ■ ■

アクセス解析を見ると,そんなに多くはないけれど,携帯電話からアクセスしてブログを読んでくれている人がいる模様。そこで,Movable Type のモバイル版を生成してくれる CGI MT4i を導入する。私自身,Webサイトを見られる携帯電話を持っていないので (!!),確認は PC のブラウザからしかしていない。

環境は Movable Type 2.661 + 日本語パッチ,MT4i 3.1a

MT4i 3.1 からは検索機能がつくそうで (MT4iの3.1アルファには、検索機能がついている - WolaWola),「おっ,これはいいかも」と思ったが,「Error: 検索機能は MT 4.15 以降でのみ使用可能です。」ということで残念。それならば旧バージョンの 3.0 でもいいが,せっかく検索の入力欄があるのだから,そのうち自分でコーディングするかも知れないという淡い期待を残しつつ,3.1を導入することにした。

インストール

こういうのは,どこに設置するかが問題で,/i/ だと「i-mode 専用」のように思えるらしい。そこで,「mobile」の意味で /m/ にすることにした (http://nlogn.ath.cx/m/)。

MT4i の最新版の入手先は Projekt Zwischen - Trac にある通りで,Subversion でチェックアウトすることになる。

バージョン 3.1a も 3.0 と同様の手順で大丈夫 (MT4i/3.0/インストール - t2o2-Wiki)。

必要となる,Perl 5.8 標準以外のモジュールは次の通り。

  • Image::Magick(画像の自動縮小機能を利用する場合)
  • HTML::Entities(XSS 防止機能を使用する場合)
  • HTML::Template
  • HTTP::Date
  • HTTP::Request
  • LWP::UserAgent
  • LWP::Simple
  • XML::Simple

Encode は Perl 5.8 で標準モジュールとなったのでリストからは除外。標準モジュールを調べるには Module::CoreList が便利で,これをインストールすると Linux なら corelist コマンドが使えるようになって,「corelist <モジュール名>」でチェックできる。

MT 2.661 で使うの修正点

カテゴリ選択欄

まずは mt4i.cgi の修正から。以下は 3.1a の行数で示すが,3.0.8 でも行数が違うだけで内容は同じ。

インストールしてトップページを表示すると,カテゴリ選択欄が正しく表示されない。一番最後のカテゴリのみが表示されるだけで,選択できない。そこで,567行目付近のコードを次のように修正する。

#           $str = ($cat == $cd_tmp[0])
            $str .= ($cat == $cd_tmp[0])
                ? "<option value=$cd_tmp[0] selected>$tmpdata"
                : "<option value=$cd_tmp[0]>$tmpdata" ;

コメントの表示

「最近のコメント15件」にはコメントが何も表示されない。1613行目付近を次のように修正する。

#   if ($_[0] && !$cfg{NonDispCat}) {
    if (!$cfg{NonDispCat}) {
        @comments = MT::Comment->load(\%terms, \%args);
    } else {
        ...

しかし,コメントが15件どころか「ダーッ」と前件表示されてしまう。limit が効いていない模様。Fenrir さんのところでは上手くいっているみたいなんだけど,どうやってるのかなぁ (Fenrir's BLog: モバイルサイトマップの追加 と MT4iの改造)。

↑とつぶやいたら,Fenrir さんが教えてくれました。「最近のコメント15件」を正しく表示するには,以下の修正を行います (1604行目付近)。

#   $args{'limit'} = ((!$_[0] || $cfg{NonDispCat}) && $_[1])
#                        ? $_[1] * 10 # Limit for recent comment and non-display category specified.
#                        : ($_[1] && !$cfg{NonDispCat}) ? $_[1] : '';
    $args{'limit'} = $_[1] ? ($_[1] * ($cfg{NonDispCat} ? 10 : 1)) : '';

MT 2.661 では,「特定のカテゴリを非表示にする」は何も指定してはいけない。指定すると「子カテゴリがないよ」というエラーになる。

自身のサイトへのリンク

自分自身のサイトへは,モバイルゲートウェイを経由しないでアクセスするようにしたい。これは Fenrir さんの方法をそのまま使わせてもらう (Fenrir's BLog: モバイルサイトマップの追加 と MT4iの改造)。3495行目付近に強調部分を追加する。

    my $archive_url = $blog->archive_url;
    if ($url =~ /^$archive_url(\d{6})\.html/){
        $url = &make_href("individual", $rowid, 0, $1 + 0, 0);
    } else {

        # Convert sorce URL to redirector
        my $tmpurl = &make_href("redirect", $rowid, 0, 0, $eid);

        # URL encode
        $url = MT4i::Func::url_encode($url);
        $url = $tmpurl . '&amp;url=' . $url;
    }

purge_old_cache.pl

キャッシュを削除するスクリプト purge_old_cache.pl を動作させてみると,次のエラーになる。

$ perl purge_old_cache.pl
Can't locate object method "config" via package "MT" at purge_old_cache.pl line 56, <DATA> line 855.

そこで,purge_old_cache.pl の 56 行目を修正する。

# my $charset = $app->config('MailEncoding') || $app->config('PublishCharset');
my $charset = $app->{cfg}->MailEncoding || $app->{cfg}->PublishCharset;

index.tmpl

検索機能は,MT 2.661 では動作しないので,トップページから外してしまう。修正は tmpl/index.tmpl を編集して,該当箇所を削除すればよい。

2008年1月15日追記:
最近のコメントが15件以上表示されてしまう問題について追記しました。Fenrir さんに感謝します。

2011年11月9日追記:
元記事へのリンクを追加する方法について書きました (nlog(n): MT4i の個別記事に元記事へのリンクを追加する)。

Posted by n at 2009-01-13 21:18 | Edit | Comments (2) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments

コメント表示されない問題の修正を記事アップした後に行っていたようです。トラックバックを戴いた記事に追加情報を掲載しましたので、ご参考まで。

Posted by: fenrir at January 15, 2009 00:24

fenrir さん
追加の修正情報によって,最近のコメントが全部ではなく15件だけの表示になりました。
ありがとうございました。

Posted by: n at January 15, 2009 07:12
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?