PowerCMS™

7/6 東京 PowerCMS 5 新機能紹介セミナー追加開催! 個別相談は PowerCMS 導入・構築 個別無料相談会

PowerCMS ブログ

ホーム > PowerCMS ブログ > 管理画面から再構築を行なった時に別のブログも再構築する

2018年02月20日

管理画面から再構築を行なった時に別のブログも再構築する

MultiBlogを使用して別のブログ記事を表示するといったことを行うことがあるかと思います。再構築トリガーを使用することで再構築の手間を減らすことができますが、手動での再構築が必要な場合は、再構築の操作を2回行わなければならず若干面倒です。

PowerCMSには「管理画面へのリクエスト・パラメータによる再構築トリガー」という機能があり、管理画面で特定の操作が行われた時に特定のブログの再構築を行うように設定することができます。これを再構築の操作に対して設定すれば、片方を再構築するだけでもう一方も再構築されるようにできます。

この記事では「ID:2のブログを再構築したらID:1のブログのインデックスを再構築する」場合の設定方法を紹介します。

「管理画面へのリクエスト・パラメータによる再構築トリガー」の設定は、以下の形式のYAMLを使用して行います。

<トリガーの名前>:
  params:
    <管理画面のURLのパラメータ>
  blog_id:  <再構築するブログのID>
  archive_type:
    <再構築するアーカイブタイプ>

<再構築するブログのID> には1を指定します。<再構築するアーカイブタイプ> には「index」や「individual」などのアーカイブタイプを指定します。再構築の対象はインデックスなので「index」を指定します。 <管理画面のURLのパラメータ> には再構築が終わった画面のURLに入っているパラメータを指定します。この指定するパラメータを得るのに若干のコツを必要とします。

まず、ID:2のブログの再構築が終わった画面のURLを取得します。

http://localhost:8002/cgi-bin/mt/mt.cgi?__mode=rebuild&blog_id=2&type=Monthly%2CPage%2CCategory%2CIndividual%2Cindex&next=4&offset=0&limit=&total=1&start_time=1518688676&entry_id=&is_new=&old_status=&old_categories=&old_previous=&old_next=

このURLの ? 以降を取り出して & で分割します。

__mode=rebuild
blog_id=2
type=Monthly%2CPage%2CCategory%2CIndividual%2Cindex
next=4
offset=0
limit=
total=1
start_time=1518688676
entry_id=
is_new=
old_status=
old_categories=
old_previous=
old_next=

再構築画面は処理状況をパラメータで引き継いでいくため、画面の識別には不要なパラメータがあります。たとえば「start_time」は処理時間を算出するための開始時刻なので毎回異なる値が設定されます。そのようなパラメータを取り除くと以下の4個になります。

__mode=rebuild
blog_id=2
type=Monthly%2CPage%2CCategory%2CIndividual%2Cindex
next=4

nextパラメータの数字は再構築されるアーカイブタイプの数によって変わるので注意してください。これはインデックス、月別、ウェブページアーカイブ、カテゴリーアーカイブ、記事アーカイブの5種類の場合の数字になります。

パラメータが用意できたらこれをYAMLにします。

BlogRebuildTrigger:
  params:
    - __mode=rebuild
    - blog_id=2
    - type=Monthly%2CPage%2CCategory%2CIndividual%2Cindex
    - next=4
  blog_id:  1
  archive_type:
    - index 

このYAMLをシステムメニューの「設定」→「PowerCMS」 にある「再構築トリガー」欄に入力すると設定が完了します。

管理画面のURLさえ分かれば再構築トリガーが設定できるので、色々と応用が効く機能なのではないかと思います。


カテゴリー
技術情報
設定・管理画面カスタマイズ
投稿者
Sakai Ryuji