このページの位置
ホーム > blogっぷり! > 石輪っぷり! > MovableType

石輪っぷり!

カテゴリ: MovableTypeのブログ記事

携帯サイトを作るためのあれこれ(その1)

今回、このサイトの携帯版のページを作成し、携帯電話からの閲覧にも対応させました。(iモード等の専用サイトではなく、いわゆる勝手サイトです。)

これまでも何度か携帯サイトを作った経験はありますが、キャリアによって仕様が様々で分かり難く、単にHTMLXHTMLだけを使い、配置や色を変えるために非推奨とされるタグや属性を使って制作していました。

でも今回は、新着リストなどの背景に色を付けたかったということもあり(テーブルを使って背景色を付けることもできますが)、きちんとXHTMLCSSを使って制作しました。

また、Movable Type で携帯サイトを作るために導入したプラグインなどもありますので、それらについての覚え書きです。

怪奇!MTのテンプレートが過去に戻る

このサイトに利用している Movable Type 4 で、時々テンプレートのいくつかが何日か前の状態に戻ってしまっていることがあるのです。
先日から携帯用テンプレートを構築していて、今日ふとPCページを見ると何かおかしい。以前変更したはずの部分が元に戻っています。さらに確認してみると、コメントプレビューや検索結果などのシステムテンプレートが随分前の状態に戻っていて、ページを表示するとエラーとなっていました。

このサイトでは5つのブログがあり(MTでの管理上のブログの数ではなく、いわゆるブログ)、各テンプレートにファイルへのリンクを設定して同期しているのですが、どうもこのファイルへのリンクを設定しているテンプレートだけが元に戻ってしまうようです。

複数のブログで共通のファイルへリンク設定しているのが原因か(各ブログのテンプレート、リンクしているファイルとも書き替わっている筈なので、そんなことは考えられないのですが)、それともサーバーの何らかが原因か、何とも不可解な現象です。
リンク設定を解除すればよいのかもしれませんが、それではメンテナンス効率が大幅にダウンします。バックアップの目的もあるファイルへのリンクですが、更にこのファイルのバックアップも取っておかなければならないのか?

それにしても今回はかなりのテンプレートが過去の状態になっており、復旧に1時間以上も費やしています。まだいくつか直さなければなりません。はぁ。。。

スパム対策 再び

以前、コメントスパム対策として「MT-Keystrokes」を導入しましたが、それから1ヶ月余りの間、このサイトの各ブログともコメントスパムは皆無でした。今のところ、かなり有用なスパム対策です。

しかしこのプラグイン、JavaScript でフォームからの投稿かどうかを判別しているので、JavaScript が無効な環境ではコメントを投稿することが出来ません。
#導入時のテストではOKだったような気がしたのですが、いろいろなブログ等で書かれている通りNGでした。JavaScript OFF の状態で投稿すると、「承認されるまで公開を保留されています。」って出るのですが、実際には投稿そのものが消えてしまうので、管理者にもわかりません。つまり、投稿者は管理者の承認を待ってるのに一向に承認されない、そして二度とコメントしないということになります。

これでは、折角コメントフォームを JavaScript OFF に対応させたのに意味がありませんし、わずかとはいえ、そういう環境のユーザーからのコメント投稿を排除することになります。

そこで泣く々く「MT-Keystrokes」を外し、新たな対策を導入してみました。

Movable Type 5 が発表になりました

先ほど 7月8日 13時30分に、Movable Type 5 が発表されました。

ウェブサイト管理機能、カスタムフィールドの強化、管理画面の刷新、更新履歴管理機能などが備わり、ユーザー数無制限のサーバライセンスが追加されています。

ベータ版が8月上旬、正式版は10月に出荷の予定とのこと。
基本ライセンスが63,000円、サーバライセンスが126,000円と価格アップしていますが、正式版出荷に先行して特別価格での販売がスタートしています。
また、Movable Type 4、Movable Type 3 ユーザー向けには、優待価格版が2010年6月末まで提供されます。
Movable type 5 新価格表[税別](PDF)

ようやく Movable Type 4 に慣れてきたところですが、時代はどんどん進化していきます。頑張って付いて行かねば。。

コメントに返信があったら通知するCommentSubscribeプラグイン

リニューアル前のMovable Type 3.xで運用していた時に、コメントした記事に新しいコメントが投稿されるとメールで通知してくれる「MT-Notifier」というプラグインを導入していました。有償ですがMT4に対応したMT-Notifierはさらに値上げされており、今回「CommentSubscribe」という無償のプラグインを導入してみました。

導入と日本語化の方法は、H.Fujimoto氏のblogに紹介されています。「CommentSubscribeプラグインの導入と日本語化

しかし、現在「CommentSubscribe」のサイトがアクセスできなっています。どこかにないか探してみたところ、MtPluginsCommentSubscribe - oscar's CODEにオリジナルとあわせて日本語化したものが置いてありました。

最初、日本語化したものをダウンロードして導入してみたのですが、コメント通知メールの送信解除がうまく動作せず、改めてオリジナルをダウンロードしてインストールし、その上で上述のH.Fujimoto氏のページから日本語化用辞書ファイルをダウンロードして導入しました。

以下、日本語化や通知メールの内容等について、更に私なりにカスタマイズしましたので、その覚え書きです。

mt-rebuildプラグインとcronで定期的に再構築

昨日、各blogのサイドバーに「人気のblog記事」というのを表示するようにしましたが、新しい記事の投稿など再構築されるタイミングでなければ更新できません。

また、本日はモブログを設定したのですが、メールによる投稿ではトップページとblogっぷり!のページがやはり再構築しなければ反映できません。

そこで、mt-rebuildとcronを使って各blogのサイドバー、トップページ、blogっぷり!のテンプレートを1時間毎に自動で再構築するようにしました。

その方法はいろいろなblog等で説明されているので割愛しますが、cronの設定でmt-rebuildを実行させるためのコマンドを、トップページの場合

(MTのディレクトリパス)/mt-rebuild.pl -mode="index" -blog_id="1" -template="メインページ"

として実行すると、以下のようなエラーになります。

Rebuild Error: Can't load template メインページ in blog_id of 1 at /home/htdocs/vuser/will3injp/public_html/cgi/mt4/mt-rebuild.pl line 112.

メインページというテンプレートが見つからないって言ってます。
そこで日本語は駄目なのかなと思い、テンプレートの名前を「main_page」に変更し、cronのコマンドを

(MTのディレクトリパス)/mt-rebuild.pl -mode="index" -blog_id="1" -template="main_page"

としたらOKでした。

シェルスクリプト(ファイル名を仮に rebuild.sh とする)に

#!/bin/sh
 
(MTのディレクトリパス)/mt-rebuild.pl -mode="index" -blog_id="1" -template="メインページ"
(複数の再構築スクリプトを記述)
 
exit

を記述して任意のディレクトリにアップロードし、cronでこれを実行させるように

(rebuild.sh のディレクトリパス)/rebuild.sh

と指定すれば日本語のテンプレート名でもよかったんですね。(7月30日訂正)

スパムコメント対策

リニューアルと共にMT4にバージョンアップしてから、MT標準のSpamLookupフィルターをすり抜けて公開されてしまうコメントスパムが多くなりました。

英語等でのコメントは想定していないので、日本語を含まないコメントやトラックバックをスパムとして判定するプラグイン「NotJapaneseLookup」を導入しているのですが、ここ数日、日本語のコメントスパムも流れて来るようになり、毎日のようにblogっぷり!全体をチェックし、公開されたスパムコメントの削除に追われています。

MT4には標準で画像認証の機能がありますが、これはユーザーに余計な手間をかけることになりますし、音声認証を併用しないと、画像文字が読めないユーザーはコメントを投稿することができません。

そこで、「MT-Keystrokes」を導入してみました。これは、人がコメントフォームのテキストエリアに入力する&投稿ボタンを押すという操作を経由しないと投稿を受け付けないというもの。
導入に際して、keystrokes.plの65行目でMTのバージョンチェックをしているので、MT4の場合は、"return 1 unless $MT::VERSION =~ m(^4\.);"と書き替える必要があります。

これでしばらく様子を見てみることにしましょう。

6月5日追記
このプラグインから吐き出されるHTMLの一部が"<script language="JavaScript" type="text/javascript">"となっており、XHTML 1.0 Strict ではエラーとなってしまいます。keystrokes.plの98行目にこの記述がありますので、Strictの場合は"<script type="text/javascript">"とする必要があります。

7月13日追記
JavaScriptが無効な環境ではコメントの投稿ができないので外しました。

コメントフォームのJavaScript OFFへの対応

Movlable Type 4.2からでしょうか、JavaScriptが無効な場合はコメントの投稿ができなくなりました。そればかりか、コメントを投稿しようとすると「不正な要求です。」という何とも嫌なエラーが表示されます。

<noscript>タグで「JavaScriptが無効な環境ではコメントを投稿することが出来ません。」と記述してしまえば簡単ですが、それではそういう環境のユーザーの参加を阻害することになります。

そこでこれをJavaScriptが無効でも投稿可能に、更に違和感のないように改善しました。

月別アーカイブのリストを年毎に纏める

Movable Typeテンプレートタグ虎の巻 」に変数や制御構造の処理を利用して、月別アーカイブリストを年毎に分類して表示するサンプルが載っていますが、40を超えた頭には複雑すぎて(汗)、その通りに記述すれば実現できるもの、なぜそうなるのか理解できません。(苦笑)

そこで、もっと分かりやすく直感的な(?)方法で、月別アーカイブリストを年毎に分類してみました。

なお、月別アーカイブリストは毎月1行ずつ増えていくため、ブログを長く運営しているとどんどん長くなっていきますので、ドロップダウンリスト(MTのデフォルトのウィジェットにあるJavaScriptを使ったもの)と、JavaScriptが使えない環境用に箇条書きリスト形式にしたものを作っています。

Feeds.App Lite が使えない

Movable Type 4.0以上ではFeeds.App Liteというプラグインが追加され、他のサイトのRSSやAtom形式の更新情報を読み込んで表示できます。

今回これを使ってプライベートなブログの更新情報を表示させようとしたのですが、MT4.25では動かないみたいです。バグでしょうか。(MT4.24では動作を確認できました。)

仕方がないので今までやってた通り、プライベートブログの方に出力用のphpファイルを作り、それをphpインクルードで読み込んで表示させました。その方が、Newマークの表示等自由にカスタマイズできますし。

サイドバーの「プライベートなblogの最近のエントリー」の部分です。

▲このページの先頭へ