PowerCMS™
2025年4月26日(土曜日)から 5月6日(火曜日・祝日)まで休業いたします。
[ブログ] ブロックタグ MTEntries を途中で抜けられるようになりました を追加しました。
[新着情報] MySQL の暗号化接続に対応した PowerCMS 6.7 / 5.3 / 4.6 の提供を開始 を追加しました。
[ブログ] 大幅に強化された PowerSync の履歴管理機能 を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ

PowerCMS を長くご利用いただいているお客様ほど、再構築処理の重さや、記事の更新に時間がかかるなど、構築当初では顕在化しなかった問題に悩んでおられるのを目にするようになりました。「再構築に時間がかかるテンプレートを改善するには」というドキュメントをご用意しておりますが、長期間運用している環境のテンプレートを読み解き、大きな変更を加えるのはなかなかにハードルが高いものです。

PowerCMS ではより長くより安定した運用が行えるよう改善を続けており、その一環として、本日リリースした PowerCMS のマイナーバージョンアップではブロックタグ MTEntries を途中で抜けられるようになりました。例えば、ブロックタグ MTEntries で記事を全件処理しながら、条件を満たす場合のみ 10 件まで出力する、といったことをしている場合、対象が 10 件を超えても全件処理が完了するまでブロックタグの処理が継続しますが、これからは 10 件処理した時点で終了させることができるようになります。導入にあたっては、テンプレートに対してひと手間かけるだけです。

break_var モディファイア

MTEntries を途中で抜けるかどうかの判定は、break_var モディファイアに指定した名前のテンプレート変数が使われます。指定したテンプレート変数が真になった時点でブロックタグを終了します。

例えば下記では、テンプレート変数 nomore に 1 を代入してブロックタグを終了しています。条件タグ MTIf を使って、ブロックタグの処理回数である __counter__ が 5 になったら場合に代入を行っているので、limit モディファイアに 10000 を指定していたとしても、MTEntryTitle タグによる記事タイトルの出力は 5 回しか行われません

<MTEntries break_var="nomore" limit="10000">
  <p><$MTEntryTitle$></p>
  <MTIf name="__counter__" eq="5">
    <MTSetVar name="nomore" value="1">
  </MTIf>
</MTEntries>

導入のしかたとポイント

break_var モディファイアの終了条件を満たして終了する場合、ブロックタグの最終処理回で処理される MTEntriesFooter やテンプレート変数 __last__ を使った分岐は処理されません。そのため、最終処理回で処理させたい内容を MTSetVarTemplate タグで囲んでおき、break_var に指定したテンプレート変数に 1 を代入するのと同時に実行させるようにします。合わせて、MTEntriesFooter やテンプレート __last__ を使った分岐でも同様に実行させます。

<MTSetVarTemplate name="__last_process__">
  <p>[これは最後の処理です] 最後の記事は <MTEntryTitle> でした</p>
</MTSetVarTemplate>

<MTEntries break_var="nomore" limit="10000">
  <p><MTVar name="__counter__">: <MTEntryTitle></p>

  <MTIf name="__counter__" eq="5">
    <p><em>終了条件が成立したので終了します。</em></p>
    <MTSetVar name="nomore" value="1">
    <MTVar name="__last_process__">
  </MTIf>

  <MTIf name="__last__">
    <p><em>終了条件が成立しませんでしたが、ループが最後まで回ったので終了します。</em></p>
    <MTVar name="__last_process__">
  </MTIf>
</MTEntries>

ご利用中の環境への導入の場合、下記のような手順になります。

  1. MTEntriesFooter やテンプレート変数 __last__ を使った分岐の中身を、ブロックタグ MTEntries の外側に移動し、<MTSetVarTemplate name="__last_process__"> 〜 </MTSetVarTemplate> で囲む
  2. MTEntriesFooter やテンプレート変数 __last__ を使った分岐の中身を、<MTVar name="__last_process__"> に置き換え、動作に問題がないか確認する
  3. ブロックタグ MTEntries にモディファイア break_var="nomore" を指定する
  4. ブロックタグ MTEntries を終了したいタイミングで <MTSetVar name="nomore" value="1"><MTVar name="__last_process__"> を記述する

入れ子でも有効

break_var モディファイアは、入れ子になった MTEntries でも正しく動作します。下記は少し複雑なテンプレートですが、下記のように動作します。コピペで使ってみてください。

  • 親の最終処理回で行う処理はテンプレート変数 __last_process__ に、子の最終処理回で行う処理はテンプレート変数 __last_process_ireko__ にあらかじめセットする
  • 親は処理回数が 5 になったら、子は処理回数が 3 になったら処理を終了する
<MTSetVarTemplate name="__last_process__">
  <li>[親の最後の処理] 最後の記事は <MTEntryTitle> でした</li>
</ul>
</MTSetVarTemplate>

<MTSetVarTemplate name="__last_process_ireko__">
  <li>[入れ子の最後の処理] 最後の記事は <MTEntryTitle> でした</li>
</ul>
</MTSetVarTemplate>

<MTSetVar name="max" value="5">
<MTSetVar name="max_ireko" value="3">

<MTEntries break_var="nomore" limit="10">

  <MTIf name="__first__"><ul></MTIf>

  <li><MTVar name="__counter__">: <MTEntryTitle>

    <MTEntries break_var="nomore_ireko" limit="10" >
      <MTIf name="__first__"><ul></MTIf>
      <li><MTVar name="__counter__">: (ID:<MTEntryID>)</li>
      <MTIf name="__counter__" eq="$max_ireko">
        入れ子が最大件数 <MTVar name="max_ireko"> に到達したので終了する
        <MTVar name="__last_process_ireko__">
        <MTSetVar name="nomore_ireko" value="1">
      </MTIf>
    </MTEntries>

  </li>

  <MTIf name="__counter__" eq="$max">
    親が終了条件 <MTVar name="max"> に到達したので終了する
    <MTVar name="__last_process__">
    <MTSetVar name="nomore" value="1">
  </MTIf>

  <MTIf name="__last__">
    親が終了条件に到達しなかったが、ループが最後まで回ったので終了する
    <MTVar name="__last_process__">
  </MTIf>

</MTEntries>

現在は MTEntries に限定した実装ですが、少なくともこのブロックタグを使うことにおいては、パフォーマンスの劣化を怖がらずに実装することも可能になるでしょう。

留意事項

break_var モディファイアは、ページ分割の機能とは併用することができません。

カテゴリー
PowerCMS 4PowerCMS 5PowerCMS 6テンプレート作成Tipsリリース&Update情報

昨日、PowerSync 2.1 がリリースされました。このバージョンでは、ファイル管理機能によりステージ環境/公開環境のファイルを一望しつつ、特定のファイルの履歴を追跡する機能が追加されました。2.0 で実装された承認機能と相まって、より堅実なウェブサイト運用に貢献できるようになっています。

cp-list.png

強化された履歴管理機能

同期の際に、同期結果としての履歴と合わせて、同期対象となったファイルをバックアップするようになりました。これにより、履歴ベースのファイルのバージョン管理が可能になりました。

新しく実装されたファイル管理機能

ステージ環境/公開環境のファイルを一覧表示する画面が追加されました。

キャプチャ:ファイル管理の画面

この画面内では、ディレクトリやファイルの各行にアイコンが表示されています。 「CMS環境」「ステージ環境」「公開環境」をクリックすると、それぞれ CMS 環境、ステージ環境、公開環境の URL が開き、それぞれ現在の状態を確認することが可能です。

同期の履歴」をクリックすると、そのファイルが対象となった同期履歴を一覧表示するモーダルダイアログを開くことができます。

画面キャプチャ:同期の履歴

「管理用ラベル」をクリックすると、その履歴の詳細画面を表示します。

履歴画面

履歴画面では、ファイルをバックアップから復元したり、一時ファイルとして同期を試したりすることができるようになりました。 バックアップされているファイルをダウンロードして内容を確認することもできます。

画面キャプチャ:同期スケジュール

一時ファイルとして同期を試す場合、HTML ファイルと画像や PDF などのファイルを混合して同期すると、HTML ファイル内に含まれる、画像や PDF へのリンクを一時ファイルとしての名前に書き換えてくれます。

その他

同期を実行する画面を進捗表示にすることでタイムアウトを避けるなど、細かな改善も行われています。ぜひ新しい PowerSync をお試しください。

※ 2.1 でリリースされた各機能は、 PowerSync ユーザーガイド からもご確認いただくことができます。

カテゴリー
PowerSyncリリース&Update情報

平素より PowerCMS をご利用、検討いただきありがとうございます。

本日は「PowerCMS 製品サポート」について2025年3月の実績を紹介します。

PowerCMSサポート(アンケート評価) 2025年3月満足評価 100%

サポート対応についてのアンケート評価

満足評価のグラフ

サポート対応のアンケート評価の結果です。

アンケートを送付した数 154件
評価いただいた数 57件
満足で評価いただいた数 57件
不満で評価いただいた数 0件

今後もこの結果が続くようチーム全体で内容を振り返り、よりよいサポート対応が行えるよう努めてまいります。

「サポート対応についてのアンケート」については下記記事を参照してください。

お問い合わせの件数

お問い合わせの件数のグラフ

2025年3月1日から3月31日までにいただいたお問い合わせは 159 件でした。

クローズされた件数

3月中にサポート全体でクローズされたお問い合わせは 152 件でした。

※ 前月までにお問い合わせされたものも含みます。
※ クローズについて、基本的にはお客様からご連絡をいただいてからクローズしておりますが、返信いただけていないものは状況を確認させていただいた後にクローズしております。

一回の連絡でクローズされた件数

クローズされた152件のうち、お問い合わせいただいてから一回の連絡でクローズされた件数は 53 件でした。

24時間以内にクローズされた件数

クローズされた152件のうち、お問い合わせをいただいてから24時間以内にクローズされた件数は 4 件でした。

「回答、対応を急いでいる」を利用された件数

「回答、対応を急いでいる」を利用された件数のグラフ

「回答、対応を急いでいる」を利用されたお問い合わせは 65 件でした。

お客様の声

アンケート評価時にお客様より頂きましたメッセージの一部を紹介いたします。

早々にご対応いただきありがとうございました。 おかげで、疑問点が解消され実装を進めることができました。
こちらの質問の意図を理解し、とても分かりやすく回答していただきました。
簡潔明瞭にご回答いただきありがとうございました。 また、留意点なども補足いただき大変助かりました。 今後ともよろしくお願いいたします。
SSL証明書の更新について、迅速な対応ありがとうございました。 今後ともどうぞよろしくお願いいたします。

今後とも PowerCMS をよろしくお願いいたします。

カテゴリー
サポート

Recent Entries