MovableTypeの管理画面って結構カスタマイズが必要になるときがあります。
たとえば、お客さんのとこに納品するときにシステム部分のものを弄られて、無茶苦茶になってしまわないように、システム管理者以外のアカウントは非表示にしたいメニューとかあるわけです。
投稿記事部分なら、MTAppjQueryプラグインが最高に便利でこれで事足りるんですが、ユーザーの権限をもっと詳細に決めたいとか、システムに関わるような部分のリンクを削除したいとかには、やはり自分でconfig.yaml を作ってカスタマイズするしかない。
ということで、そのやり方を説明。
1. カスタマイズにつかうconfig.yaml を用意する
新規テキストファイルを作成して、名前を config.yaml で保存。それを任意のフォルダ名の中にいれて、MTをインストールしているサーバーの plugins フォルダにアップロードします。
例: mt/plugins/<任意のフォルダ名>/config.yaml
2. config.yaml に実際に書き込んでいく
例えば、MT管理画面のサイドメニューにある「ツール」や「コメント」、「アイテム」「ウェブページ」といったメニューを、システム管理者以外は非表示にしたいといった場合は、config.yamlに以下のように記述します。
name: CustomMenu version: 1.0 applications: cms: menus: feedback: permission: administer tools: permission: administer asset: permission: administer website: permission: administer entry:create: permission: administer
上記の name: や version: は任意で記述。それぞれの対応箇所は以下のとおり。
feedback: コメント
tools: ツール
asset: アイテム
website: ウェブページ
entry:create:記事新規作成
次に、ユーザーダッシュボードでシステム管理者以外表示する意味ないでしょっていうものを非表示にする。
例えば、以下の例では「MovableTypeニュース」、「サイト情報」、「最近利用したウェブサイト/ブログ」を一般ユーザーには非表示に設定する記述。
widgets: mt_news: label: Movable Type News template: widget/mt_news.tmpl singular: 1 set: sidebar handler: $Core::MT::CMS::Dashboard::mt_news_widget view: user condition: sub { return MT->instance()->user->is_superuser } order: user: 500 site_stats: label: Site Stats template: widget/site_stats.tmpl singular: 1 set: main handler: $Core::MT::CMS::Dashboard::site_stats_widget view: user condition: sub { return MT->instance()->user->is_superuser } order: user: 200 favorite_blogs: label: Websites and Blogs template: widget/favorite_blogs.tmpl singular: 1 set: main handler: $Core::MT::CMS::Dashboard::favorite_blogs_widget view: user condition: sub { return MT->instance()->user->is_superuser } order: user: 300
それぞれの対応箇所は以下のとおり。
mt_news: MovableTypeニュース
site_stats: サイト情報
favorite_blogs: 最近利用したウェブサイト/ブログ
要するにやっていることは、MTのコアモジュール(/lib/MT/App/CMS.pm)をプラグインを作って上書きしている形になります。 なので、カスタマイズするときはこのコアモジュールを元に修正したい部分をコピーしてきて弄るという感じですね。 もっと詳しい説明は以下のサイトをご覧ください。