DataAPIProxyを特定の管理画面のみに適用する方法

久々にブログを投稿。MT7ばかり触っててMT6のこと忘れ始めてきています。。
しかし、案件ではMT6もやってるので脳内ぐちゃぐちゃ。。

DataAPIProxyのスクリプトを特定画面のみに適用してみる

MTAppjQueryでDataAPI SDKを有効してDataAPIProxy使う場合、以下のコードがすべての画面で挿入され遷移するたびにエンドポイント XXX.com/mt/plugins/DataAPIProxy/dataapiproxy.cgi/v3/endpoints?excludeComponents=core を呼び出します。
遷移するたび呼び出すと処理が重たくなることだったので、特定の画面(記事編集画面)のみに呼び出すように調整してみます。

  
<script type="text/javascript" src="/cgi-bin/mt/mt-static/data-api/v3/js/mt-data-api.min.js"></script>
<script>
    mtappVars.DataAPI = new MT.DataAPI({
        baseUrl:  'http://xxx.com/cgi-bin/mt/plugins/DataAPIProxy/dataapiproxy.cgi',
        clientId: 'MTAppjQuery-DataAPI'
    });
</script>
  

システムプラグイン一覧画面

http://localhost:10000/cgi-bin/mt/mt.cgi?_mode=cfgplugins&blog_id=0

プラグイン画面

特定の画面だけにDataAPI SDKを呼び出すには、MTIfを使いMTAppjQueryで提供されている mtappVars.screen_id で分岐させ記事編集画面のみ出力させることで特定の画面だけに適用することができます。

mtappVars.screen_id は管理画面に遷移した状態でブラウザのコンソール画面を開き mtappVars.screen_id を叩くことで現在の screen_id を参照することができます。
また、mtappVarsはJSでもMTタグで使用することができるようです。(知らなかった。。orz)

  • プラグイン一覧のMTAppjQueryのDataAPI SDK を利用を無効にする
  • 変数 mtapphtmlfoot に追加(MTAppjQueryのuser.jsの直前)のテキストエリアに以下のコードを入れる
  • 設定を保存
  
<mt:If name="mtappVars" key="screen_id" eq="edit-entry">
    <script type="text/javascript" src="/mt-static/data-api/v3/js/mt-data-api.min.js"></script>
    <script>
    mtappVars.DataAPI = new MT.DataAPI({
        baseUrl:  'http://localhost:10000/cgi-bin/mt/plugins/DataAPIProxy/dataapiproxy.cgi',
        clientId: 'MTAppjQuery-DataAPI'
    });
    </script>
</mt:If>
  

設定後、記事編集画面のみに上記コードが挿入されるようになります。
※http://localhost:10000/cgi-bin/mt/ はご自身のMTインストール部分に読み替えてお使いください。

Author

札幌でフロントエンドエンジニアとして働いています。好きな音楽はSIAM SHADE!
SIAM SHADEの六人目のメンバーとして日々ロックを愛し続けている。
HTML,CSS,JavaScriptをベースにCMS構築が得意です。
HAMWORKS社員 https://ham.works