このブログは Movable Type Advent Calendar 2023 13日目の記事です。
今日は、Movable Typeの「再構築トリガー」機能に関する小ネタをご紹介します。
皆さん、再構築トリガー機能はお使いですか?
再構築トリガーは、マルチサイト構成のウェブサイトにおいて、 子サイト側の《ニュース》投稿に連動して、親サイトの HOMEページ を再構築し新着ニュース部分に自動反映されるようにしたい、なんていう時に使われます。静的パブリッシュのMovableTypeならではの機能で、MTにMultiBlog機能が備わって以来の歴史があるので利用経験のある開発者さんは多いのではないかと思います。
MT8ドキュメント > コンテンツの更新時に再構築をおこなう
https://www.movabletype.jp/documentation/mt8/admin-guide/manage-site/settings/rebuild-trigger/
再構築トリガーには 設定項目が5つあります。
例えば、
①子サイトXXX の、
②コンテンツタイプ《お知らせ》が
③公開 されたときに、
④親サイトAAA の、
⑤インデックス(テンプレート)が再構築される
といった感じで設定します。
{①どのサイト}の {②どのオブジェクト} が {③トリガー}されたとき、
{④ターゲットのサイト}で{⑤アクション}される
前半①〜③がいわゆる トリガーの発火条件にあたり、
③は、 保存|公開|公開終了 の3択です。
"公開されたとき"、とか"保存されたとき"とサラッと書いていますが、手動・時限公開、下書きから公開。。。さまざまな公開されかたがあるわけで、よくよく考えると「はて?こういう時にトリガーは発火するの?しないの?」とわからなくなります。
先日 久しぶりに再構築トリガーの設定をした際にこういう事態に陥り、Movable Typeサポートに問い合わせしたことがありました。
同じように もやもやしている誰かのお役に立つかと思い、以下 サポートで教えてもらったことを共有しますね。
下書き記事を編集し、下書きステータスのまま「保存」したら、再構築トリガーは発火するの? って不安になりません?
→ 大丈夫です。
元のステータスや保存時のステータスがなんであれ、「保存」さえすれば再構築トリガーは発火します。
元々 公開している記事を、「公開」保存したら発火するの?
→ 大丈夫です。
保存時点で「公開」ステータスであるかどうか、だけで評価されます。
下書きからの公開だろうが、公開から公開だろうが無関係です。
また、手動編集で「公開」する場合も、日時指定公開機能により自動「公開」される場合でも、再構築トリガーは実行されます。
公開記事を「下書き」に変えて記事を取り下げた場合は、再構築トリガーは実行されるの?
→ 実行されません。
日時指定終了機能により「公開終了」された場合のみ再構築トリガーが実行されます。
なぜって、"下書きステータスにする"のは "公開終了" ではないから。。。(チョットわかりにくい)
ここまでが 再構築トリガーの小ネタでした。設定時の参考になれば嬉しいです!
前述の「再構築トリガー」は、マルチサイト間で再構築を連動させるしくみでした。
この他には、定期的に再構築したいこともありますよね?
例えば、当日終了したイベントの案内ページを定時に再構築してあらかじめ仕込んでおいた終了メッセージを表示したい、などです。こうした要件には、次のような解決方法があります。
1) cronとrebuild-pagesで実現する方法
https://www.redamoon.net/log/post/000029/
再構築トリガーが他サイトのコンテンツの状態に連動して発動するものなのに対し、こちらは定期実行するタイプです。再構築トリガーはインデックステンプレートの再構築限定ですが、こちらはアーカイブ系のテンプレートも再構築指定できるので違った使い方が生まれます。2つ程Perlモジュールのインストールが必要なので環境を選ぶかもしれません。
2) ScheduledRebuild プラグイン
https://plugins.movabletype.jp/tokiwatch/scheduledrebuild.html
自分は実際に使ったことがないのですが、このプラグインも近いことができそうです。
3) IndexRebuilder プラグイン
https://product.skyarc.co.jp/engineerblog/entry/movabletypeindexrebuilder.html
定期的にインデックステンプレートを再構築するプラグインです。対象がインデックステンプレ限定だったり、実行間隔が1時間固定だったりと制約多めなものの、設定がシンプルでお手軽です。古いプラグインですが、少なくともMT7では問題なく使えました。MT8でも動きそうな。。。(未検証です)
以上です。
それでは皆様、ハッピークリスマス!!