« 2009年6月 | メイン | 2009年8月 »

2009年7月 アーカイブ

2009年7月10日

ダッシュボードへのお手軽な情報配信を実現する TwitterWidget

最近、密かにTwitterが盛り上がっています。

エムロジックには、こんな人もいたりするのでスタッフのタイムラインは常ににぎやかで情報があふれています。
便利なクライアントソフトの登場などにより、メール以上に身近なコミュニケーションツールになりつつある気すらします。

そして最近では企業やメディアの更新情報がTwitterで配信されるということも珍しくなくなってきました。

もちろんエムロジックもPostToTwitterプラグインを使って配信しています。


さて、今日は配信される更新情報などをダッシュボードに表示するプラグインを作成しましたので公開します。

ダッシュボードでTwitterといえば、吉松さん作のDashboardTwitterプラグインが定番ですが、今回作成したダッシュボード・ウィジェットは「表示する」だけのシンプルなものです。

twitterwidget_2.png

今回作成したプラグインは、ダッシュボードのサイドバー(右側)に、指定ユーザーのつぶやきを表示するウィジェットを追加します。
表示するユーザー名やウィジェットのタイトルはプラグイン設定画面でカスタマイズすることができます。ただし表示できるのはつぶやきを公開しているユーザーのものに限ります。
ブログレベルのプラグイン設定に指定がない場合には、システムレベルのプラグイン設定に従います。指定がない場合には、エムロジックの更新情報を表示します。

プラグインをインストールすると、ダッシュボードのサイドバーに「Twitterのつぶやき」というウィジェットが追加されますので、「追加」ボタンをクリックしてダッシュボードに追加すれば表示されます。

twitterwidget_1.png

イントラブログに自社のちょっとした更新情報を表示したり、MTで制作したサイトのダッシュボードに制作者の更新情報を表示するようにしたり、使い道はいろいろあるのではないかと思います。
よろしければ、お試しください。

ダウンロード:zip形式tar.gz形式
対応バージョン:Movable Type 4.1以上
ライセンス:MIT License

お問い合わせ

エムロジック株式会社ではMovable Typeによるサイト構築やプラグイン開発、iPhone・Windows等のアプリケーション開発業務を行っています。
お問い合わせはこちらまで。

2009年7月23日

ブログごとにプラグインの有効/無効を切り替える

MTプラグインは、MTシステムにインストールするとシステム単位の有効/無効は指定できますが、ブログごとの有効/無効を指定することができません(2009/07現在)。
システムに実装されていない以上プラグインで実装するしかないわけです。
毎回同じようなコードを書くわけで、いいかげんテンプレート化できてきたので、ここで、紹介しておこうと思います。

package MT::Plugin::BlogEnable;

use strict;
use MT::Plugin;
use base qw( MT::Plugin );

use MT;
my $plugin = MT::Plugin::BlogEnable->new({
    id => 'blogenable',
    key => __PACKAGE__,
    name => 'BlogEnable',
    blog_config_template => \&blog_config_template,
    settings => new MT::PluginSettings([
        ['plugin_enable', { Default => 1, Scope => 'blog' }],
    ]),
});

MT->add_plugin($plugin);

sub blog_config_template {
    my $tmpl = <<'EOT';
<mtapp:setting
    id="plugin_enable"
    label="<__trans phrase="Enable:">">
    <p><input type="checkbox" value="1" name="plugin_enable" id="plugin_enable"<mt:if name="plugin_enable"> checked="checked"</mt:if> class="cb"/> <label for="plugin_enable">Plugin enable</label></p>
</mtapp:setting>
EOT
}

sub plugin_enable {
    my $plugin = shift;
    my ($blog_id) = @_;
    my %plugin_param;

    $plugin->load_config(\%plugin_param, 'blog:'.$blog_id);
    my $value = $plugin_param{plugin_enable};
    $value;
}

1;

結局のところ、ブログごとのプラグイン設定で、有効/無効を指定させるってことになります。
で、実際のタグの処理や、フックの処理の部分で

return 1 unless $plugin->plugin_enable($blog_id);

みたいな感じで、有効になっていなければ抜けるみたいにするのが良いのかも。
もっとスマートな方法もありそうな気がするんですけど、割と自由にコントロールしやすいこの方法が今のところベストな気がしています。