簡単なダッシュボードウィジェットを作る(その1)

先日、風の便り(?)で、以下のような話を耳にしました。

Movable Typeのダッシュボードに、日常行う作業のリンクを一覧表示できれば、お客様に「このメニューから作業してください」というようなことを伝えやすい。

上記のようなことは、ダッシュボードウィジェットのプラグインを作成すれば可能です。
プラグインといっても、簡単なダッシュボードウィジェットなら、config.yamlファイルとテンプレートだけで作ることができ、プログラミングは不要です。
数日に分けて、簡単なダッシュボードウィジェットを作る方法を紹介します。
今日は、config.yamlファイルの書き方を解説します。

ダッシュボードウィジェットの作成例

1.config.yamlファイルの書き方

まず、プラグインの名前等の設定を記述するために、config.yamlファイルを作ります。
config.yamlファイルの書き方は以下のようになります。

name: プラグインの名前
id: プラグインのID
description: プラグインの概要
version: プラグインのバージョン
widgets:
  ダッシュボードウィジェットのID:
    label: ラベル
    plugin: $プラグインのID
    template: ファイル名
    singular: true
    set: mainまたはsidebar

各行の内容は以下の通りです。

内容
name: プラグインの名前プラグインの名前を自分で決めて指定します。
この名前が、管理画面のプラグイン一覧のページに表示されます。
id: プラグインのIDプラグインのIDを自分で決めて指定します。
IDは英数字で付けます。
description: プラグインの概要プラグインの概要を入れます。
ダッシュボードウィジェットのID:ダッシュボードウィジェットのIDを自分で決めて指定します。
label: ラベルダッシュボードで、追加するウィジェットを選ぶ欄に、ここで指定したラベルの文字列が表示されます。
plugin: $プラグインのID「プラグインのID」のところを、「id: プラグインのID」の行で指定したIDに置き換えます。
template: ファイル名後でウィジェットのテンプレートを作りますが、そのファイル名を指定します。
singular: trueこの行を入れると、そのウィジェットをダッシュボードに1回だけ追加することができます。
この行がないと、そのウィジェットをダッシュボードに何度でも追加できるようになります。
set: mainまたはsidebar「set: main」の行を入れると、そのダッシュボードウィジェットは、メイン部分(ダッシュボードの左寄り)にのみ追加できるようになります。
また、「set: sidebar」の行を入れると、そのダッシュボードウィジェットは、サイドバー部分(ダッシュボードの右寄り)にのみ追加できるようになります。
この行を入れない場合は、そのダッシュボードウィジェットはメイン/サイドバーのどちらにも追加できるようになります。

なお、プラグインの説明とラベルは、日本語で入力することもできます。
日本語化する場合、本来なら英語から日本語に翻訳する辞書を作ることが必要です。
ただ、config.yamlファイルの文字コードを、mt-config.cgiのPublishCharsetの設定と同じにしておけば、とりあえずはconfig.yamlファイルに直接に日本語を書くことができます。

2.config.yamlファイルの例

例えば、以下のような仕様で、ダッシュボードウィジェットを作りたいとします。

項目内容
プラグイン名Dashboard Widget Sample
プラグインのIDDashboardWidgetSample
プラグインの概要ダッシュボードウィジェットの例
プラグインのバージョン1.0
ダッシュボードウィジェットのIDsample_widget
ラベル作業メニュー
テンプレートのファイル名sample_widget.tmpl
複数回追加の可否不可
ダッシュボードウィジェットの追加先メイン

この場合、config.yamlファイルを以下のように書きます。

name: Dashboard Widget Sample
id: DashboardWidgetSample
description: ダッシュボードウィジェットの例
version: 1.0
widgets:
  sample_widget:
    label: 作業メニュー
    plugin: $DashboardWidgetSample
    template: sample_widget.mtml
    singular: true
    set: main