Movable Type 7 で下書きのコンテンツデータを下書きのまま保存した場合にカテゴリアーカイブが削除されてしまう不具合への応急処置

Movable Type 7 で下書きのコンテンツデータを下書きのまま保存した場合にカテゴリアーカイブが削除されてしまう不具合への応急処置をご紹介します。

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

Movable Type 7 でカテゴリフィールドを持つコンテンツデータを、下書きの状態から下書きのまま保存したとき、そのコンテンツデータが紐付いていたカテゴリアーカイブのファイルが削除されてしまうという不具合があります。これはおそらく r.4605 から r.4508で発生するようです。

なかなか大きな問題なので、MTAppjQuery を使って一時的に対処する方法をご紹介します。

DataAPI で再構築する

user.js に下記のコードを追加します。

(function($){

  if (mtappVars.screen_id === 'edit-content-type-data' && mtappVars.content_data && mtappVars.content_data.status === '1' && location.search.indexOf('saved_changes=1') !== -1) {
    const templateId = 74;
    mtappVars.DataAPI.getToken(function() {
      mtappVars.DataAPI.publishTemplate(mtappVars.blog_id, templateId, {data: JSON.stringify({})}, function (response) {
        if (response && typeof response.error !== 'undefined') {
          alert(response.error,message)
        }
      });
    });
  }

})(jQuery);

上記のコード中の const templateId = 74; の部分のテンプレートIDは、カテゴリアーカイブの ID に差し替えてください。

また、MTAppjQuery のシステム設定で、管理画面での DataAPI の利用 を有効にして、バージョンを v4 にしてください。

このコードで、コンテンツデータが下書きで保存された場合に、テンプレートIDで指定したテンプレートが再構築されます。もしそのカテゴリアーカイブの再構築が重い処理になる場合は、「下書き → 下書き」に保存されたときだけ処理が動くように調整する必要はあるかもしれません。

以上です。

Published 2020-06-11
Updated 2020-06-11

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