プラグイン「MTAppjQuery」をインストールすると
「mtappVars」というJavaScriptのグローバル変数が使えるようになります。
jsのオブジェクト操作の練習がてら色々やってみます。
ブラウザのコンソールログで表示する
コンソールに以下を打ち込めば、現在表示している管理画面でのオブジェクトが返ってきます。
mtappVars
もしくは、json形式で表示したいのであれば以下。
// Movable Type 7 r.5401以前はこちら
Object.toJSON(mtappVars);
// Movable Type 7 r.5401以降 / MTAppjQuery v2.8.0以降はこちら
JSON.stringify(mtappVars);
参考サイト
各プロパティの値を取得する
以下は、コンテンツデータ(Movable Type 7)の入力画面を開いた状態で。
mtappVarsの中身はこんな感じになっています
※一部のプロパティを省略しています。
mtappVars
"author_id": 1,
"blog_id": 1,
"content_data": {
"blog_id": 1,
"content_type_id": 4,
"data": {
"6": "あああ", // 識別ラベル
"10": ["15"], // カテゴリ
"11": [] // コンテンツタイプ
}
}
ブログID(サイトID)を取得する場合。
let blogID = mtappVars.blog_id;
console.log(blogID);
// コンソール内ではこれでもよし
mtappVars.blog_id;
コンソールでの出力結果
1
少し深いコンテンツフィールドの値を取得する場合
キー名を階層ごとに繋いでいく。
let contentID = mtappVars.content_data.content_type_id;
console.log(contentID);
コンソールでの出力結果
4
対象の値がオブジェクトだった場合
オブジェクトでかえってくる。
let contentData = mtappVars.content_data.data;
console.log(contentData);
コンソールでの出力結果
Object { 6: "あああ", 10: ["15"], 11: [] }
オブジェクトの中の値のみを求める場合
「forEach」メソッドで配列の中身を順に出力
Object.values(mtappVars.content_data.data).forEach(function(data) {
console.log(data);
})
// アロー関数で書いた場合
Object.values(mtappVars.content_data.data).forEach(data => {
console.log(data)
});
コンソールでの出力結果
あああ
Array [ "15" ]
特定のコンテンツフィールドの値を取得する場合
キーで指定する場合
{"6": "あああ"} の「6」がキーにあたる。
let contentData = mtappVars.content_data.data["6"];
console.log(contentData);
コンソールでの出力結果
あああ
index番号で指定する場合
指定したオブジェクトの先頭の値を取得するには、「Object.values」メソッドを使用します。
※indexは0から始まるので、最初を指定する場合は「0」になる。
let contentData = Object.values(mtappVars.content_data.data)[0];
console.log(contentData);
コンソールでの出力結果
あああ
コンテンツフィールドのID名を取得する
今度は、プロパティの値ではなく、キー部分(コンテンツフィールドのID名)を取得したい。
「Object.keys」メソッドを使います。
// 配列で出力
Object.keys(mtappVars.content_data.data);
// forEachでリスト出力
Object.keys(mtappVars.content_data.data).forEach(function(data) {
console.log(data);
})
// アロー関数で書いた場合
Object.keys(mtappVars.content_data.data).forEach(data => {
console.log(data)
});
コンソールでの出力結果
// 配列で出力
Array(3) [ "6", "10", "11" ]
// forEachでリスト出力
6
10
11
参考サイト