管理画面のメニューをカスタマイズする

MT-column > Plugin
| | コメント(1) | トラックバック(0)

メニューをカスタマイズする

MT5の管理画面で、「左側にあるメニュー」と「上部にある新規作成のメニュー」をカスタマイズする方法を紹介します。

customizable_menus.jpg

カスタマイズの方法

メニューのカスタマイズはプラグインの作成をもって行います。ただ作業の内容はサンプルの config.yaml を書き換えるだけなので、Perl の知識や config.yaml に関する特別な知識は必要ありません。

例1: 特定のメニュー項目を隠す

プラグインによるカスタマイズを行なわなくても、ユーザーの権限を減らすことで利用できないメニューは表示されなくなるのですが、デフォルトの設定だと「記事の作成」権限をを与えるだけで、「ブログ記事」の他に「コメント」と「ツール」のメニュー項目も出てきてしまうので、本当にブログ記事だけを書かせたいユーザー向けに、これらのメニューを消してみます。

config.yaml

name: MenuSample
version: 1.0

applications:
    cms:
        menus:
            feedback:
                permission: administer
            tools:
                permission: administer

例2: カテゴリーを指定した「新規作成」や「一覧」

「新規作成」や「一覧」のメニューをカスタマイズしてみます。

新規作成メニュー項目の追加

「ブログ記事新規作成画面」のURLに「&category_id=3」などを付けるとカテゴリーが選択されている状態で新規作成画面になるのですが(他のフィールドに対しても指定できます)、このようなデフォルト値を指定した新規作成へのリンクをメニューに追加してみます。

            entry:create_news:
                label: 「ニュース」新規作成
                order: 100
                mode: view
                args:
                    _type: entry
                    category_id: 3
                permission: create_post
                view: blog

「args:」の下に渡したい項目名と値を指定します。

一覧メニュー項目の追加

「ブログ記事一覧画面」のURLに「&filter=category_id」などを付けるとカテゴリーで絞り込みを行うことができるので、新規作成と同様にメニューに追加してみます。

            entry:manage_news:
                label: 「ニュース」一覧
                order: 150
                mode: list_entry
                args:
                    filter: category_id
                    # filter_key本当は必要ないですが、
                    # 他の絞り込みのリンクと区別するために入れています
                    filter_key: list_news
                    filter_val: 3
                permit_action: use_entry:manage_menu
                view:
                 - blog
                 - website

こちらも「args:」の下に渡したい項目名と値を指定します。

新規作成メニューへの追加

「新規作成メニュー」は新しいもののせいか、仕様がちょっと微妙なところがあるのですが、「compose_menus > compose_menus > menus」を書き換えることによりカスタマイズすることができます。

        compose_menus:
            compose_menus:
                menus:
                    entry_news:
                        label: ニュース
                        order: 50
                        mode: view
                        args:
                            _type: entry
                            category_id: 3
                        permission: create_post
                        view: blog

メニュー項目の書き方としては左側のメニューと同じです。

config.yaml

まとめるとこのような「config.yaml」になります。

既知の問題点

上記のように柔軟に初期値を指定できる「新規作成」へのリンクなのですが、これについては実は2つほど問題点があります。

  • カテゴリーの違う2つの「新規作成」のメニュー項目を用意した場合(上記の例)、新規作成画面へ進んだ場合に両方のメニューがアクティブになってしまう。
  • カスタムフィールドとカテゴリーを関連付けている場合に、「&category_id=x」のようにURLでカテゴリーを指定した場合はカスタムフィールドが表示されない。

例3: ユーザーダッシュボードに表示する

ユーザーのトップページとして用意されている「ユーザーダッシュボード」には、デフォルトではメニューは表示されていないのですが、ここまでの指定と同じように config.yaml でメニューを表示させることができます。

config.yaml

name: MenuSample
version: 1.0

applications:
    cms:
        menus:
            ydb_entry:
                label: ブログ記事

            ydb_entry:create:
                label: ブログAの記事作成
                order: 100
                mode: view
                args:
                    _type: entry
                    blog_id: 2
                condition: |
                    sub {
                        MT->instance->user->permissions(2)->can_create_post
                    }
                view: user

            ydb_entry:create_blogb:
                label: ブログBの記事作成
                order: 200
                mode: view
                args:
                    _type: entry
                    blog_id: 3
                condition: |
                    sub {
                        MT->instance->user->permissions(3)->can_create_post
                    }
                view: user

「view: user」がポイントです。

各ブログに「ブログ記事作成権限」のあるユーザーにはメニューを表示します。

デフォルトのメニュー

デフォルトのメニューを変更する場合に、メニュー項目の名前を指定する必要がありますので、(MT5rc2時点での)デフォルトのメニューを並べた config.yaml を作りました。

デフォルト状態の config.yaml

サンプルのダウンロード

この記事で作成した config.yaml をまとめました。

各「config_xxx.yaml」を「config.yaml」に変更するとそのまま利用できます。

ダウンロードページ

番外編

ユーザーダッシュボードに関しては「システム」のメニューを出してしまえばよいのではないかという考え方もあり、Junnamaさんがそのように動作するUserDashboardというプラグインを公開していますので、こちらも参照して頂くとよいかもしれません。

ただJunnamaさんもブログで触れられていますが、「いずれ動かなくなるだろうな」という要素もあるようなので、その点は若干気をつけた方がよいと思います。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 管理画面のメニューをカスタマイズする

このブログ記事に対するトラックバックURL: https://tec.toi-planning.net/mtos/mt-tb.cgi/708

コメント(1)

tezutataku :

初心者の私でも簡単に設定できました。
複数のブログを管理する時、ブログ別にメニューを変更できないのでしょうか。

コメントする