Movable Type
物凄い周回遅れな感じがしますが、Twitterを始めた上に、ブログにTweetをリストアップするカスタマイズをしました。
仕事でTwitterをプロモーションに使うことになったら、Twitterの優位性を説明できないなと急に思い立ってTwitterを始めました。
気軽さが良かったのか、アカウント作ってから頻繁にTweetをポストしまくってます。なんかライフブログの様相を呈し始めてます。Twitterになりそうで正直怖いですね。こんなに楽しいとは正直思いませんでしたヨ。
せっかく始めたのだから、サイドバーにTweetsを表示しようと思いまして、Movable Type 4.25(以下MT4)から搭載され、MT5晴れて標準落ちしたプラグイン「Action Streams」を使って表示させてみることにしました。(MT5では有志によって「Action Streams」の対応がなされました。)
もう、「Action Streams」に関しては色んなところで書かれていますが、自分への覚え書きという事でエントリーします。
まず、Twitterのアカウントを作って、Twitterを始めます。後を設定してもコレをしなきゃ意味ないですからね。一応、何個かTweetしておいて下さい。
ブラウザーからMT4の管理画面に入り、一番上の「システムメニュー」をプルダウンさせて、「ユーザー」を選択します。すると、MTを使っているユーザーの一覧が表示されますから、ここからTwitterを使っているユーザーを選択、ユーザー名をクリックします。すると「ユーザー情報の編集」が表示されます。が、この画面では何も操作しないで、サイドバーの「利用サービス」をクリックします。一覧が表示されますが、殆ど場合何も表示されていないと思います。ここで「プロフィールを追加」をクリックすると設定画面が現れます。ここで、利用サービスを「Twitter」、ユーザー名をTwitterで作成した時のユーザー名を入れ、保存します。
ブログの管理画面に戻り、メニューの「ツール」をプルダウンし「プラグイン」をクリックします。プラグインの一覧が表示されますから、「Action Streams 2.1」を開き「設定」をクリック、「再構築を有効にする」をONにして保存。これで下準備が出来ました。
新しくwidgetを作って、下記のようにタグを組んで表示してみました。
<ul> <mt:ActionStreams service="twitter"> <li><mt:StreamAction /></li> </mt:ActionStreams> </ul>
一応表示されたのですけど、「ユーザー名は"tweet内容"をtweetしました」って何か前後に余計なモノが付いているのですヨ。自分のblogに表示させるのでtweetの前後はいらないと思ったので、ここはGoogle先生に、自分と同じように思ってカスタマイズした人がいない聞いてみました。さすがは先生、早速見つけて下さいましたヨ。
「FICC LABS」さんの「MT 4.25 でアクションストリームの表示をカスタマイズ」というエントリーに書かれていたカスタマイズ方法がぴったりだったので施してみました。
まず、MTをインストールしているディレクトリを開きます。下記の位置にあるファイルをエディタで開きます。
/plugins/ActionStreams/streams.yaml
今回はTwitterという事で、Twitterの部分だけ変更します。 841行目あたりにある下記の一文を見つけ出します。
html_form: '[_1] <a href="[_2]">tweeted</a>, "[_3]"'これを下記のように単純化するだけで、「ユーザー名は"tweetの内容"をtweetしました」っていう前後の文章が消えます。
html_form: '[_3]'
tweetの内容を全文表示した場合、サイドバーではかなり読みにくくなってしまう為、「Naga Blog」では、文字列を設定した一定の長さにトリミングするプラグイン「trimj.pl」を併用して表示されたtweetを短縮する表示する事にしました。全文表示はTwitterの各tweetに飛ばすようにしています。
<ul> <mt:actionstreams service="twitter"> <li><a href="<mt:StreamActionVia />" target="_blank"><mt:StreamAction trimj_to="26" /></a></li> </mt:actionstreams> </ul>
これで、tweet内容だけでリスト表示されると思いきや、別のユーザーからtweetをリプライされた場合、「@ユーザー名 リプライ」となって@ユーザー名の所にリンクが自動的に挿入され表示が崩れてしまいました。
そこで、タグを下記のように修正し、リンクが入らないように修正しました。
<ul> <mt:actionstreams service="twitter"> <li><a href="<mt:StreamActionVia />" title="<mt:StreamActionTitle />" target="_blank"><mt:StreamActionTitle trimj_to="26" /></a></li> </mt:actionstreams> </ul>
リンクタグにtitleを入れて、マウスを乗せただけでも全文表示できるように工夫してみました。
しかし、これだけでは、使っているCORESERVERでは、tweetがポストされてもブログのリストは更新されません。
「世界中の1%の人々へ」さんの「【Movable Type 4.25】 CRONジョブで情報を自動更新する方法」エントリーを参考にさせていただいて、MTの自動更新に挑戦してみました。
まず、シェルスクリプトを書きます。テキストエディタを開いて新規ファイルを作ります。下記のように記述して、ファイル名の後に.shと拡張子を付け、文字コードはASCII、改行コードLFで保存します。例ではcron1.shとしています。
#!/bin/sh cd /virtual/dakiny/public_html/mt /usr/bin/perl ./tools/run-periodic-tasks exit
cd /virtual/の後は、契約者で異なります。
/mtは、mt.cgiが入っているディレクトリです。
ファイルを、puplic_htmlから上の階層のディレクトリにアップロードし、パーミッションを705に設定します。
次に、crontabコマンドを設定します。ブラウザーからCORESERVERにアクセスして、サーバ設定の為のコントロールパネルに入ります。左サイドバーの管理メニューから「CRONジョブ」をクリックします。
設定の欄は、分は0、時は*、日は*、月は*、曜日は*と入力、ファイル名の欄は1つめのファイル名を入れます。「cron1.sh」って感じですね。ファイル名の後に「>/dev/null 2>&1」を付け加えるとエラーメールの送信が行われません。これで、これで毎時0分に更新でエラーメールを受け取らないという命令になってます。
更新時間の設定は変更できるので、毎日5時0分に更新なんて言うのもできます。ただし、動作間隔を短くするほどサーバーに負荷かかります。CORESERVERでは、3分以内の設定は許可されていないそうです。
自分的には、1時間に1回の更新があれば十分でしょう。頻繁にBlogのトップページを更新してtweetがポストされているかチェックする人は恐らくいないと思います。だってTwitterの方を見れば良いわけですから。ある意味、Twitterやってるよっていうアドバルーンみたいなモノですから。
久しぶりのカスタマイズエントリーは書くの疲れました。