0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

mtappVarsのほしい箇所の値を取得したい

Last updated at Posted at 2023-03-30

プラグイン「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

参考サイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?