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 は「ワークスペース」「スペース」 と呼び方が変わりましたねー。