Ver. 3.2.25 & Ver. 3.1.74リリースのお知らせ


この記事では、2026年7月7日にリリースした Ver. 3.2.25Ver. 3.1.74 の変更内容について紹介いたします。

現在お困りの問題に該当する項目がありましたら、お早めにバージョンアップのご検討をお願いいたします。


リリースノート

Ver. 3.2.25

Features

  • CMS-7659 メールテンプレートをTwigテンプレートエンジンで記述できるようにする

  • CMS-7710 フォームのエクスポート/インポート機能を追加

  • CMS-7700 校正オプション str_replace / preg_replace を追加

  • CMS-7697 HtmlPurifier で許可ホストの iframe を whitelist で指定できるようにする

  • CMS-7696 ブロックエディターの画像ブロック・ファイルブロックで複数メディアの一括アップロード・挿入に対応

  • CMS-7693 Twig有効時にアンカー類のパス書き換えを抑止する設定を追加

  • CMS-7691 メディア一括アップロードの件数上限緩和と同時並列数の設定対応

Changed

  • CMS-7739 Develop テーマを Ver. 1.1.1 にアップデート

  • CMS-7709 post_max_size 超過POSTを413で処理し themes/system/413.html の専用テンプレートを返すように変更

  • CMS-7699 各種インポート画面に同一バージョンのエクスポートファイルのみ対応する旨の注意書きを追加

  • CMS-7690 テストランナー Vitest を 4 系へアップデート

  • CMS-7685 エントリー編集画面の地図ユニットUIを改善

Security

  • CMS-7735 SNS認証での管理ログイン時に管理ログイン用IP制限が適用されない問題の修正

Fixed

  • CMS-7738 メンテナンスプログラム(setup)からの DB 更新で PRIMARY KEY が失われ、ユーザー一覧に同一ユーザーが重複表示される問題の修正

  • CMS-7737 シークレットブログ/カテゴリーが会員機能無効時にアクセス制限されない問題の修正

  • CMS-7712 進捗ポーリングの TypeError で進捗バーが途中停止する問題を修正

  • CMS-7711 シーケンステーブルが不整合な状態になっても不正なIDのデータが作られないように修正

  • CMS-7708 画像リサイズ時にEXIFのOrientation(向き)が考慮されず画像が回転して表示される問題の修正

  • v2_form モジュールで添付ファイルのファイルパスがおかしくなる問題の修正

  • CMS-7695 エントリーのインポートで予約リビジョン参照が不正データとして取り込まれる問題の修正

  • CMS-7694 テーマ設定のセレクトで、未設定や存在しないテーマを選択しているときの表示が分かりづらい問題の修正

  • CMS-7689 ブロックエディターのテキストリンクで相対パスURLが保存できない問題の修正

  • CMS-7688 グレースケール画像のWebP変換失敗で「画像の生成に失敗しました」エラーになる問題の修正

Ver. 3.1.74

Fixed

  • CMS-7736 SNS認証での管理ログイン時に管理ログイン用IP制限が適用されない問題の修正


リリースノートの補足

CMS-7659 メールテンプレートをTwigテンプレートエンジンで記述できるようにする

{# 例: tpl_twig 有効時、フォームの自動返信メールテンプレートなどで #}
{{ name.value }} 様

お問い合わせいただいた内容は以下の通りです。

{{ inquiry.value | nl2br }}

Twig テンプレートを有効にしている場合、メールテンプレートおよびフォームの本文・件名(管理画面での直接入力)を Twig で記述できるようになりました。

テーマファイル経由は制作者向けの機能として include/extends・Markdown・extendsTwig の独自フィルタなど公開側テーマと同じ仕組みが使えます。

一方、フォームの本文・件名のように運営者が管理画面から直接入力する文字列は、利用できるタグ・フィルタ・関数を絞ったサンドボックス環境で評価され、送信者側の入力によるテンプレートインジェクションを防ぎます。

エスケープ方式はファイルの拡張子から自動判定されます(.txt 系はエスケープなし、.html 系は HTML エスケープ)。

メールテンプレート

CMS-7710 フォームのエクスポート/インポート機能を追加

フォームの設定をYAML形式でエクスポート・インポートできるようになりました。エクスポートはフォーム編集画面から、インポートは専用画面(「フォームインポート」)から実行します。インポート時、フォームID(form_code)が対象ブログ内の既存フォームと一致する場合は既存のフォームを保持したまま設定を上書きし、送信ログやエントリーとの紐付けを維持します。一致するフォームがなければ新規作成されます。エントリー・ブログ・モジュールと同様に、他ブログや他環境へのフォーム設定の持ち出しが可能になります。

なお、インポートは同一バージョンの a-blog cms でエクスポートしたファイルのみ対応しています。

フォームのエクスポート・インポート

CMS-7700 校正オプション str_replace / preg_replace を追加

{title}[str_replace('株式会社', '(株)')]
{tel}[preg_replace('/(\d{2,4})-?(\d{2,4})-?(\d{3,4})/', '$1-$2-$3')]

変数の校正オプションに、文字列をそのまま置換する str_replace と、正規表現で置換する preg_replace を追加しました。preg_replace はデリミタ・フラグを含む PCRE 記法で記述し、$1 などの後方参照も利用できます。不正な正規表現を指定した場合は元の値をそのまま返すフェイルセーフになっています。

校正オプション

CMS-7697 HtmlPurifier で許可ホストの iframe を whitelist で指定できるようにする

# config.system.yaml
html_purifier_iframe_allowed_hosts: [
    'www.youtube.com/embed|fullscreen; encrypted-media; picture-in-picture|',
    'www.youtube-nocookie.com/embed|fullscreen; encrypted-media; picture-in-picture|',
    'player.vimeo.com/video|fullscreen; picture-in-picture|',
    'www.google.com/maps/embed'
  ]

これまで変数出力中の iframedangerous_tags により一律でエスケープされていましたが、ホスト単位のホワイトリスト方式に変更しました。書式は host[/パス前方一致][|Permissions-Policyトークン[|sandboxトークン]] で、既定では YouTube/YouTube(nocookie)/Vimeo/Google マップの埋め込みを、必要なパスと最小権限のトークン付きで許可します。許可ホスト以外の iframesrc だけが無効化されます(タグ自体は残ります)。

HTMLPurifier による HTML サニタイズ

CMS-7696 ブロックエディターの画像ブロック・ファイルブロックで複数メディアの一括アップロード・挿入に対応

画像ブロック・ファイルブロックについて、メディア選択・アップロード・ドラッグ&ドロップのいずれの経路でも複数ファイルをまとめて選択でき、選択した順に個別のブロックとして一括挿入されるようになりました。

また、ブロックを選択していない状態でもエディター本文へ画像・ファイルを直接ドラッグ&ドロップすると、その場でブロックが生成されます。画像ブロックの枠には画像のみ、ファイルブロックの枠には画像以外のファイルのみが挿入され、枠の種別に合わないメディアはアップロード前の段階で弾かれます。

CMS-7693 Twig有効時にアンカー類のパス書き換えを抑止する設定を追加

# config.system.yaml
acms_anchor_no_rewrite_if_twig_enabled: on # on | off

Twig を有効にしている場合、a 要素の href や form 要素の action に書いた相対パスへ、a-blog cms が自動でブログコードを補完する処理を抑止できる設定を追加しました。ブロックエディター等でサイト内リンクを相対パスのまま書いても、意図しないパス書き換えが起きなくなります。この設定は新規インストール時のみ既定で有効(on)になります。

既存サイトはアップグレード時に既存の config.system.yaml を引き継ぐため、この設定を明示的に追加しない限り従来どおりパスが書き換えられます。

パスの書き換え

CMS-7691 メディア一括アップロードの件数上限緩和と同時並列数の設定対応

# config.system.yaml
media_upload_limit: 100        # 一度にアップロードできる最大件数(1〜1000)
media_upload_concurrency: 4    # 同時にアップロードする本数(1〜20)

メディアの一括アップロードについて、これまで固定だった1回あたりの上限件数(20件)を、設定で変更できるようにしました(デフォルト値は100件)。

また、これまで選択したファイルを一斉に並列送信していた処理を、同時実行数を絞って順次送信する方式に変更し、その並列数も設定できるようにしました(デフォルト値は4)。

大量のファイルを一度にアップロードする際のサーバー負荷を抑えられます。

CMS-7709 post_max_size 超過POSTを413で処理し themes/system/413.html の専用テンプレートを返すように変更

PHP の post_max_size を超える POST を送信すると $_POST が空になり、送信内容を復元できません。従来は、テンプレートに post:v#filesize という変数ブロックを書いておくことでだけエラーを表示できる仕組みでした。この仕組みは Twig テーマでは動作せず、また書き忘れているテーマでは何も表示されないため、送信が失敗したことにすら気づけませんでした。

本バージョンでは、テーマ側で何も書かなくても、PHP がリクエストの段階で post_max_size 超過を検知し、自動的に HTTP 413 を返すように変更しました。413応答時のテンプレートは system テーマに新設した 413.htmltpl_413 で変更可能)が使われるため、Twig・従来型テンプレートのどちらでも同じエラーページが表示されます。

また、テーマに 413.html を追加することでオリジナルのデザインにカスタマイズ可能です。


最後に

該当する問題がございましたら、できるだけ早めのバージョンアップをご検討ください。

今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいります。

今後ともどうぞよろしくお願いいたします。

同じタグ付けがされている記事