MTAppjQuery が提供する mtappVars の中身を確認する

MTAppjQuery で提供される `mtappVars` という JavaScript のグローバル変数の値を確認方法をご紹介します。

この記事は弊社 bit part 合同会社が提供している Movable Type プラグイン「MTAppjQuery」の利用を前提としております。MTAppjQuery って何?という方は弊社の「MTAppjQuery」の製品ページをご覧ください。

MTAppjQuery では、特定のページをカスタマイズしやすいように mtappVars という JavaScript のグローバル変数が定義されています。

この値を確認方法をご紹介します。なお、 mtappVars に入ってくる値はページのよって異なるので、下記の作業はカスタマイズを適用したい Movable Type の管理画面のページを開いた状態で実行してください。

ブラウザの開発者ツールで確認

Chrome や Firefox の開発者ツールでコンソールを開き、 mtappVars と入力してエンターします。

mtappvars-min.png

あとは右三角のアイコン(▶)をクリックして行けば、下の階層を見ていくことができます。

JSONLint で確認

Chrome や Firefox の開発者ツールでコンソールを開き、 Object.toJSON(mtappVars) と入力してエンターします。

すると文字列が表示されるので、一番外側の " を除いた { から } までを選択してコピーします。

Chrome の場合は下図の Copy ボタンをクリックすればコピーされます。

mtappvars-copy-min.png

次に JSONLint - The JSON Validator を開き、テキストエリア部分にコピーした文字列を貼り付け、 Validate JSON をクリックします。

すると Valid JSON と緑色で表示され、テキストエリアの JSON がきれいに整形されて表示されます。

mtappvars-jsonlint-min.png

特定のページに適用させたいとき

例えば、記事編集編集(ウェブページも含む)だけにカスタマイズを適用したいときは、上記で確認した JSON の値を参考に user.js の中で下記のように条件分岐してカスタマイズしていきます。

// 記事とウェブページの編集画面のカスタマイズ
if (mtappVars.screen_id === "edit-entry" || mtappVars.screen_id === "edit-page") {
 // ここにカスタマイズする内容を記述
}

この mtappVars.screen_id は特定のページにカスタマイズを適用したいときの分岐によく利用します。したがってまずは mtappVars.screen_id で分岐し、それでも特定しきれないときは他の変数を使っていくという流れが効率的です。

よく使われる mtappVars の値

mtappVars.site

表示しているサイトの情報が入ってきます。 mtappVars.site.id はそのサイトの ID が入りますので、サイトごとに適用する内容を分岐できます。

なお、この mtappVars.site はシステムスコープの管理画面では定義されていませんので、下記のように最初に定義されているかを確認する必要があります。

// ID が 1 のサイトに適用
if (typeof mtappVars.site !== 'undefined' && mtappVars.site.id == 1) { }

mtappVars.entry

表示している記事の情報が入ってきます。 mtappVars.entry.id はその記事の ID が入りますので、記事ごとに適用する内容を分岐できます。

// ID が 1 の記事に適用
if (typeof mtappVars.entry !== 'undefined' && mtappVars.entry.id == 1) { }

mtappVars.page

表示しているウェブページの情報が入ってきます。 mtappVars.page.id はそのウェブページの ID が入りますので、記事ごとに適用する内容を分岐できます。

// ID が 1 のウェブページに適用
if (typeof mtappVars.page !== 'undefined' && mtappVars.page.id == 1) { }

mtappVars.contenttypeid

表示しているコンテンツタイプの ID が入ってきます。 コンテンツタイプごとに適用する内容を分岐できます。

// ID が 1 のコンテンツタイプに適用
if (typeof mtappVars.content_type_id !== 'undefined' && mtappVars.content_type_id == 1) { }

mtappVars.me

ログインしている自分の情報が入ってきます。 mtappVars.me.id は自分の ID が入りますので、ユーザーごとに適用する内容を分岐できます。

// ID が 1 のユーザーに適用
if (mtappVars.me.id == 1) { }

また、 mtappVars.me.role はユーザーに割り振られているロール情報が サイトID:ロール名 の形式で入っています。したがって、サイト ID が 1 のブログ管理者に適用したい場合は下記のようにします。

// サイト ID が 1 のブログ管理者に適用
if (jQuery.inArray('1:ブログ管理者', mtappVars.me.role) !== -1) { }

mtappVars.is_superuser

システム管理者の場合は 1 になります。

// システム管理者に適用
if (mtappVars.is_superuser) { }

その他

その他にも様々な情報が格納されていますので、コンソールをうまく利用して色々とご確認ください。

MT 変数として使う

上記で見てきた変数は Movable Type の変数にも格納されています。したがって、MTAppjQuery のプラグイン設定の自由テキストフィールドでは、下記のようにして分岐することができます。

<mt:If name="mtappVars" key="content_type_id" eq="1"> ... </mt:If>

以上です。

Published 2019-01-30
Updated 2019-06-25

「MTAppjQuery」カテゴリの記事一覧