MovableType

MTAppjQuery の user.js で サイトやブログ、スペースの個別設定を管理する方法

関数を命名したい。ID じゃ分からん。

MTAppjQuery は管理画面がカスタマイズできる便利なプラグインです。ただ、カスタマイズを記述する user.js が全ての箇所が使用できるがゆえに、コード量も多くファイルが縦長になりがちです。

そのため、無計画で実装すると、あっという間にコードからデジャブを感じるようになります。

そんなときに、この様な雛形があると、関数で分岐できるようになります。ハッピー。

サンプルコード

(function ($) {
  const sites = (site_id) => {
    const settings = {
      10: function () { mtapp_site_news(); }, // ニュース
      20: function () { mtapp_site_products(); }, // 製品情報
      30: function () { mtapp_site_csr(); }, // CSR
      40: function () { mtapp_site_ir(); }, // IR
    }
    if (settings[site_id] != null) {
      // 共通設定をここに書く
      settings[site_id]();
    }
  }

  const mtapp_site_news = () => {
      // 個別設定をここに書く
  }

  const mtapp_site_products = () => {
      // 個別設定をここに書く
  }

  sites(mtappVars.blog_id);
})(jQuery);

解説

サイトID とサイトごとの個別設定を配列で定義します。

    const settings = {
      10: function () { mtapp_site_news(); }, // ニュース
      20: function () { mtapp_site_products(); }, // 製品情報
      30: function () { mtapp_site_csr(); }, // CSR
      40: function () { mtapp_site_ir(); }, // IR
      サイトID: function () { 個別設定を書く関数; }, 
    }

上記で定義したサイトで共通にしたい設定を記述します。

    if (settings[site_id] != null) {
      // 共通設定をここに書く
      settings[site_id](); // ここで個別設定を読み込みます。
    }

例えば、サイトID 10 のニュースサイトで定義したい内容を記述します。

  const mtapp_site_news = () => {
      // 個別設定をここに書く
    if (mtappVars.screen_id === 'edit-entry') {
      // 記事の場合の処理を書くとか。
    }
  }

最後のコードで関数を実行します。

  sites(mtappVars.blog_id);
})(jQuery);

あとがき

Movable Type 7 は「サイト」「子サイト」、Movable Type 6 と PowerCMS 5 は「ウェブサイト」「ブログ」、PowerCMS 6 は「ワークスペース」「スペース」 と呼び方が変わりましたねー。