MTAppjQuery で提供される `mtappVars` という JavaScript のグローバル変数の値を確認方法をご紹介します。
MTAppjQuery では、特定のページをカスタマイズしやすいように mtappVars
という JavaScript のグローバル変数が定義されています。
この値を確認方法をご紹介します。なお、 mtappVars
に入ってくる値はページのよって異なるので、下記の作業はカスタマイズを適用したい Movable Type の管理画面のページを開いた状態で実行してください。
Chrome や Firefox の開発者ツールでコンソールを開き、 mtappVars
と入力してエンターします。
あとは右三角のアイコン(▶)をクリックして行けば、下の階層を見ていくことができます。
Chrome や Firefox の開発者ツールでコンソールを開き、 Object.toJSON(mtappVars)
と入力してエンターします。
すると文字列が表示されるので、一番外側の "
を除いた {
から }
までを選択してコピーします。
Chrome の場合は下図の Copy
ボタンをクリックすればコピーされます。
次に JSONLint - The JSON Validator を開き、テキストエリア部分にコピーした文字列を貼り付け、 Validate JSON
をクリックします。
すると Valid JSON
と緑色で表示され、テキストエリアの JSON がきれいに整形されて表示されます。
例えば、記事編集編集(ウェブページも含む)だけにカスタマイズを適用したいときは、上記で確認した JSON の値を参考に user.js
の中で下記のように条件分岐してカスタマイズしていきます。
// 記事とウェブページの編集画面のカスタマイズ
if (mtappVars.screen_id === "edit-entry" || mtappVars.screen_id === "edit-page") {
// ここにカスタマイズする内容を記述
}
この mtappVars.screen_id
は特定のページにカスタマイズを適用したいときの分岐によく利用します。したがってまずは mtappVars.screen_id
で分岐し、それでも特定しきれないときは他の変数を使っていくという流れが効率的です。
表示しているサイトの情報が入ってきます。 mtappVars.site.id
はそのサイトの ID が入りますので、サイトごとに適用する内容を分岐できます。
なお、この mtappVars.site
はシステムスコープの管理画面では定義されていませんので、下記のように最初に定義されているかを確認する必要があります。
// ID が 1 のサイトに適用
if (typeof mtappVars.site !== 'undefined' && mtappVars.site.id == 1) { }
表示している記事の情報が入ってきます。 mtappVars.entry.id
はその記事の ID が入りますので、記事ごとに適用する内容を分岐できます。
// ID が 1 の記事に適用
if (typeof mtappVars.entry !== 'undefined' && mtappVars.entry.id == 1) { }
表示しているウェブページの情報が入ってきます。 mtappVars.page.id
はそのウェブページの ID が入りますので、記事ごとに適用する内容を分岐できます。
// ID が 1 のウェブページに適用
if (typeof mtappVars.page !== 'undefined' && mtappVars.page.id == 1) { }
表示しているコンテンツタイプの ID が入ってきます。 コンテンツタイプごとに適用する内容を分岐できます。
// ID が 1 のコンテンツタイプに適用
if (typeof mtappVars.content_type_id !== 'undefined' && mtappVars.content_type_id == 1) { }
ログインしている自分の情報が入ってきます。 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) { }
システム管理者の場合は 1
になります。
// システム管理者に適用
if (mtappVars.is_superuser) { }
その他にも様々な情報が格納されていますので、コンソールをうまく利用して色々とご確認ください。
上記で見てきた変数は Movable Type の変数にも格納されています。したがって、MTAppjQuery のプラグイン設定の自由テキストフィールドでは、下記のようにして分岐することができます。
<mt:If name="mtappVars" key="content_type_id" eq="1"> ... </mt:If>
以上です。