MTAppjQuery で特定のコンテンツデータを公開・更新した時に別のコンテンツタイプアーカイブを再構築する方法

MTAppjQuery を使って特定のコンテンツデータを公開、更新した場合に別のコンテンツタイプアーカイブテンプレートを強制的に再構築させる方法をご紹介します。

この記事は弊社 bit part 合同会社が提供している Movable Type プラグイン「MTAppjQuery」の利用を前提としております。MTAppjQuery って何?という方は弊社の「MTAppjQuery」の製品ページをご覧ください。

MTAppjQuery v2.5.0 を使って特定のコンテンツデータを公開・更新したときに、別のコンテンツタイプアーカイブテンプレートを強制的に再構築する方法をご紹介します。

DataAPI を有効化

システム及びサイトの「Webサービス」の設定でDataAPIを有効化します。

Auto rebuild01 min

また、システムの MTAppjQuery の設定の中の「管理画面での DataAPI の利用」を 有効 に、「Data API バージョン」を v4 に設定します。

Auto rebuild03 min

トリガーページのパラメータを確認

保存しときに「別のコンテンツタイプアーカイブ」を再構築するトリガーとなる「特定のコンテンツデータ」にサンプルデータを入れて保存し、ブラウザの開発者ツールのコンソールで console.table(mtappVars.params); と入力して、起動させるためのパラメータを確認します。

Auto rebuild04 min

また、「特定のコンテンツデータ」を「公開状態で保存した時」に「別のコンテンツタイプアーカイブ」を再構築したい場合は、コンソールで console.table(mtappVars.content_data); と入力して、status の値も確認しておきます。

Auto rebuild05 min

再構築するテンプレートのパラメータを確認

再構築したいテンプレートの編集ページを開き、コンソールで console.table(mtappVars.template); を実行して blog_idid を確認します。

Auto rebuild06 min

user.js(確認画面なし編)

特定のコンテンツデータを公開・更新した時に別のコンテンツタイプアーカイブを再構築するため、下記のコードを user.js に追記します。

(function($){

  if (
    // console.table(mtappVars.params);で確認した中の下記のパラメータで条件分岐
    mtappVars.params.__mode === "view"
    && mtappVars.params._type === "content_data"
    && mtappVars.params.blog_id === "6"
    && mtappVars.params.content_type_id === "8"
    // console.table(mtappVars.content_data);で確認した status の値で条件分岐
    && mtappVars.content_data.status === "2"
    // 新規保存または更新時のパラメータ
    && (mtappVars.params.saved_added === "1" || mtappVars.params.saved_changes === "1")) {

    // console.table(mtappVars.template); で確認した blog_id を第一引数に、id を第二引数にセット
    mtappVars.DataAPI.publishTemplate(5, 49, {data: "{}"}, function (response) {
      console.log(response);
    });
  }

})(jQuery);

user.js(確認画面あり編)

別のコンテンツタイプアーカイブを再構築する前に確認ウィンドウを出したい場合は mtapp.modalConfirm (v2.5.0 で追加)を利用して下記のようにします。

(function($){

  if (
    // console.table(mtappVars.params);で確認した中の下記のパラメータで条件分岐
    mtappVars.params.__mode === "view"
    && mtappVars.params._type === "content_data"
    && mtappVars.params.blog_id === "6"
    && mtappVars.params.content_type_id === "8"
    // console.table(mtappVars.content_data);で確認した status の値で条件分岐
    && mtappVars.content_data.status === "2"
    // 新規保存または更新時のパラメータ
    && (mtappVars.params.saved_added === "1" || mtappVars.params.saved_changes === "1")) {

    // mtapp.modalConfirm を利用して確認ウィンドウを表示
    mtapp.modalConfirm({
      content: '〇〇コンテンツデータのページを更新しますか?',
      callback: function () {
        // console.table(mtappVars.template); で確認した blog_id を第一引数に、id を第二引数にセット
        mtappVars.DataAPI.publishTemplate(5, 49, {data: "{}"}, function (response) {
          console.log(response);
        });
      }
    });
  }

})(jQuery);

下図のように確認ウィンドウが表示され、「OK」をクリックすると別のコンテンツデータが再構築されます。

Auto rebuild07 min

以上です。お試しください。

Published 2020-07-06
Updated 2022-03-18

「MTAppjQuery」カテゴリの記事一覧