下位互換性のない変更点


下位互換性のない変更点があります。Ver. 3.1 以下のバージョンからアップデートする際はお気をつけください。

標準CSSフレームワークの仕様変更

本バージョンでは ユニットのレイアウト方法を float を利用した方法から Flexbox 及び CSS Grid を利用した方法に変更しています。そのため、acms.css にて定義されているユニットのデフォルトスタイルが変更されています。

acms.css を利用してユニットのスタイルを定義している場合、Ver. 3.2.0 未満からアップデートする際には、アップデート前のバージョンの system テーマに同梱されている acms.css を利用中のテーマにコピーしてからアップデートを行ってください。

たとえば、以下のファイルをコピーします

  • themes/system/css/acms.css

  • themes/system/css/acms.min.css

これらを themes/ご利用テーマ/css/ に配置することで、既存のデザイン崩れを防ぐことができます。

なお、ユニットのスタイルを独自でCSSを記述して適用している場合は、この作業は不要です。


引用ユニットを埋め込みユニットに名称変更

これまで「引用ユニット」として提供されていた、OGP 情報を取得して外部コンテンツを表示するユニットを、より正確な表現である「埋め込みユニット」に名称変更しました。

あわせて、従来は blockquote タグで囲んでいた HTML 構造を、リンクとして適切に扱えるように a タグで囲む構造へ変更しています。これにより、外部コンテンツの埋め込み表現がより意味的に正しいマークアップになります。


HTML 構造の変更により、これまで「引用ユニット」に適用していた CSS スタイルが正しく反映されず、デザインが崩れる可能性があります。必要に応じてスタイルの修正を行ってください。


一部組み込みJSの廃止

本バージョンでは、以下の組み込みJSを廃止しました。これらのスクリプトをご利用中の場合は、アップデート前に代替手段へ切り替えるなどの対応をお願いいたします。

  • 「高さを揃える(js-autoheight)」を廃止

  • 「イメージビューアー(prettyPhoto)」を廃止

  • 「イメージビューアー(Highslide JS)」を廃止

  • 「アダプティブ・イメージ(js-adaptive_image)」を廃止

  • 「スライドショー(bxSlider)」を廃止

  • 「プレースホルダー(js-placeholder)」を廃止

  • 「現在のURLと一致するa要素を表示する(js-viewing-receptor, js-viewing-erase)」を廃止

  • 「クリックエリアを拡大する(js-biggerlink)」を廃止

  • 「SSLへの書き換え」を廃止

  • 「パラメータが指定されたdl要素をflashに置き換える(swfobject)」を廃止

  • 「セレクトボックス内の選択されている option要素のテキストを表示する(select2text)」を廃止

  • 「input要素の value 属性に指定したJavaScriptを実行する」を廃止

  • 「アクセス時に自動スクロール(ready scroll)」を廃止

  • 「リンク先をインラインフレームで表示する(copy right)」を廃止

  • 「送信ボタンからフォーム送信時に新規ウィンドウを開く(blank submit button)」を廃止

  • 「フォームのエンターによる送信禁止 (banEnterSubmitMask)」を廃止


cart@blog テーマを廃止

カート機能が実装されていた「cart@blog」テーマは廃止されました。代わりに、新しい「ECテーマ」をご利用ください。


コンフィグで設定するメタ情報を廃止(%{META_KEYWORDS}, %{META_DESCRIPTION})

使用されなくなっていたため、本バージョンで廃止しました。


トラックバック機能を廃止

本バージョンより、トラックバック機能を廃止しました。

従来は記事間で相互リンクを行う目的でトラックバック機能を提供していましたが、現在ではほとんど利用されておらず、またスパムの温床になるケースも多かったため、セキュリティとメンテナンス性の観点から完全に廃止することとなりました。


Facebookログイン機能を廃止

本バージョンより、Facebookログイン機能を廃止しました。

近年のFacebook側のAPI仕様変更や審査要件の厳格化により、運用コストや利用の安定性に課題があったため、今後の保守性とセキュリティの観点から、Facebookログイン機能の提供を終了することとなりました。


画像ユニットのexif情報設定機能を廃止

画像ユニットで選択された写真の情報を元に、exif 情報(カメラのモデル、焦点距離、絞り値、シャッタースピード、ISO感度、撮影日)を自動でキャプションに設定する機能を廃止いたしました。

既に登録されているデータに関しては今後も引き続き表示することが可能ですが、新規に exif 情報をキャプションに追加することはできなくなります。


Ver.2.7 以前のテキストユニット機能を利用する設定を廃止

Ver. 2.8 からテキストユニットで LiteEditor が利用できるようになりましたが、以下の JavaScript を適用することで、LiteEditor を無効にし、Ver.2.7 以前のテキストユニットを利用することができていましたが、今回この機能は廃止されました。

ACMS.Ready(function(){
  ACMS.Config.LiteEditorFeature = false;
});

各GETモジュールのコード変更

本バージョンでは、各GETモジュール(ACMS_GET系クラス)の内部コードを改善・整理しています。

そのため、標準のGETモジュール(例:ACMS_GET_Entry_Summary など)を継承してカスタマイズしているカスタムモジュールをお使いの場合、仕様の差異により不具合が発生する可能性があります。


バージョンアップ前に、カスタムモジュールの挙動を事前に確認・検証いただくことを推奨します。



SQLへルパの仕様変更

本バージョンでは、内部で使用しているSQLヘルパークラス(例:SQL::newSelect()SQL::newWhere()など)に仕様変更を加えました。これにより、以下のような影響がある可能性があります。


SQLヘルパを直接使用した独自処理やプラグインを実装している場合、カスタム部分の挙動を事前に確認・検証してください。



拡張アプリの互換性

Ver. 3.2.0 のリリース時点では、すべての拡張アプリが Ver. 3.2 に対応しているわけではありません。

現在、利用頻度の高い拡張アプリから順次 Ver. 3.2 に対応を進めております。


  • 一部の拡張アプリは Ver. 3.2 環境下で正常に動作しない可能性があります。

  • バージョンアップ前に、ご利用中の拡張アプリの対応状況をご確認ください。



Ver. 3.2.x で推奨されなくなる機能


以下内容が推奨されなくなります。将来バージョンで廃止される可能性がありますので、ご注意ください。

カート機能を非推奨化

カート機能を非推奨化しました。今後新しくカート機能を実装する場合は「Shopping Cart 拡張アプリ」をご検討ください。


一部組み込みJSの非推奨化


ping送信機能を非推奨化

ブログ更新時に外部サービスへ通知を行う ping 送信機能は、現在では多くのサービスで利用されていないことや、通知先の安定性・信頼性の観点から、今後の利用を推奨しない機能となりました。必要な場合は代替手段のご検討をお願いします。


一部モジュールを非推奨化

利用頻度の低いモジュールや役割が重複しているモジュールを一部非推奨化しました。

非推奨になったGETモジュール

  • Banner(代替: Media_Banner)

  • Category_EntryList(代替: Category_EntrySummary)

  • Entry_Headline(代替: Entry_Summary)

  • Entry_List(代替: Entry_Summary)

  • Entry_Photo(代替: Entry_Summary)

  • Plugin_Schedule(代替: Schedule)

  • Shop2_Cart_Empty(代替: Shopping Cart 拡張アプリ)

  • Shop2_Cart_List(代替: Shopping Cart 拡張アプリ)

  • Shop2_CartNotify(代替: Shopping Cart 拡張アプリ)

  • Shop2_Cart_Result(代替: Shopping Cart 拡張アプリ)

  • Shop2_Form_Address(代替: Shopping Cart 拡張アプリ)

  • Shop2_Form_DeliverList(代替: Shopping Cart 拡張アプリ)

  • Shop2_Form_Item(代替: Shopping Cart 拡張アプリ)

  • Shop2_Form_Order(代替: Shopping Cart 拡張アプリ)

  • Shop2_Form_PaymentList(代替: Shopping Cart 拡張アプリ)

  • Shop2_Form_RequestList(代替: Shopping Cart 拡張アプリ)

  • Shop2_Form_Tracking(代替: Shopping Cart 拡張アプリ)

非推奨になったPOSTモジュール

  • Ajaxリクエストでの ACMS_POST_2GET(代替: ACMS_POST_2GET_Ajax)

  • ACMS_POST_PingWeblogUpdate(代替: なし)

  • ACMS_POST_Shop2_Cart_Add(代替: Shopping Cart 拡張アプリ)

  • ACMS_POST_Shop2_Cart_Calculate(代替: Shopping Cart 拡張アプリ)

  • ACMS_POST_Shop2_Cart_Empty(代替: Shopping Cart 拡張アプリ)

  • ACMS_POST_Shop2_Form_Address(代替: Shopping Cart 拡張アプリ)

  • ACMS_POST_Shop2_Form_Backstep(代替: Shopping Cart 拡張アプリ)

  • ACMS_POST_Shop2_Form_Checkout(代替: Shopping Cart 拡張アプリ)

  • ACMS_POST_Shop2_Form_Confirm(代替: Shopping Cart 拡張アプリ)

  • ACMS_POST_Shop2_Form_Submit(代替: Shopping Cart 拡張アプリ)


ACMS_POST_2GET モジュール自体は非推奨になっていません。ポストインクルードhtmxリクエストでのモジュール指定の場合に限り「ACMS_POST_2GET」モジュールが非推奨になりました。代替モジュールとして「ACMS_POST_2GET_Ajax」をご利用ください。



リッチエディターを非推奨化

リッチエディターの利用が非推奨となりました。今後はブロックエディターをご利用ください。


テキストユニットで一部のタグセレクトを非推奨化

以下のタグセレクトは独立したユニットとして、利用できるようになったため非推奨になりました。

  • pre

  • none

  • markdown

  • wysiwyg


多言語ユニットを非推奨化

多言語ユニットは以下の理由から非推奨になりました。

廃止予定はありませんので、現在ご利用中の方はそのままお使いいただけますが、新規での利用は推奨いたしません

  • 仕様が複雑で開発や保守にかかるコストが高い

  • データ構造の特性上、再利用や拡張が難しい

  • 他のCMSと比べても独自性が強く、混乱を招きやすい

  • 運用や学習の難易度が高い


ユニットグループを非推奨化

グループユニットが追加されたことにより、ユニットグループ機能が非推奨になりました。

廃止予定はありませんので、現在ご利用中の方はそのままお使いいただけますが、新規での利用は推奨いたしません


新規インストール時はユニットグループが無効の設定でインストールされますが、アップデート時は互換性のため、ユニットグループが有効に設定されたままになります。


配置 v1 を非推奨化

配置 v2 が追加されたことにより、既存の配置機能を 配置 v1 と名称変更し非推奨化されました。

配置 v2 では既存の配置 v1 に存在した 「おまかせ」及び「全体」の設定項目が廃止され、「中央」「左」「右」の3項目のみの設定になりました。これにより、直感的にユニットの配置を行うことができるようになります。

配置 v1 については、廃止予定はありませんので、現在ご利用中の方はそのままお使いいただけますが、新規での利用は推奨いたしません


新規インストール時は配置 v2 の設定でインストールされますが、アップデート時は互換性のため、配置 v1 の設定のままになります。

テーマについて


Ver. 3.2.0 では 標準テーマが大きく刷新 され、新規案件では新しい標準テーマをベースに開発いただくことを推奨いたします。従来のテーマも引き続き利用可能ですが、最新の開発環境・UI をご活用いただくために、新標準テーマの採用をご検討ください。

Blogテーマ

従来テーマから大きな変更点はありません。

  • デザインの変更はありません

  • ブロックエディタ対応

  • ブログ向けテーマ

  • シングルブログ

blogテーマのデザイン

Memberテーマ

従来テーマから大きな変更点はありません。

  • デザインの変更はありません

  • ブロックエディタ対応

  • 会員機能を標準搭載

  • シングルブログ

memberテーマのデザイン。

Siteテーマ

従来からデザイン・実装ともに大きく変わっております。豊富なテンプレートを備えており、企業サイトとして利用しやすいテーマとなっております。

  • デザインの刷新(UTSUWAテーマベース)

  • インストール時点でマルチブログによる実装

siteテーマのデザイン

Beginnerテーマ

従来からデザイン・実装ともに大きく変わっております。Siteテーマを初心者向けにアレンジしたテーマです。a-blog cms の基本機能を学ぶのに最適で、HTML・CSS を学習したばかりの方でもカスタマイズしやすくなっています。

  • デザインの刷新(UTSUWAテーマベース)

  • シングルブログ

  • テンプレート継承機能を使わない実装

beginnerテーマのデザイン

Developテーマ

自作テーマのためのフロントエンドビルド環境と最小限の基本的なテンプレートファイルを含んだテーマです。メンテナンス性とパフォーマンスを高めたい場合におすすめです。

  • Tailwind CSS Alpine.js htmx Vite といったライブラリ・フレームワーク・ツールを利用

  • 一覧と詳細の基本テンプレートのほか、フォームのテンプレートを標準搭載

  • シングルブログ

developテーマのデザイン

htmx の基本


htmx とは

htmx は、HTML の属性だけで Ajax や部分更新、履歴管理といった高度なインタラクションを実現できる軽量な JavaScript ライブラリです。JavaScript コードをほとんど書かずに、既存の HTML 要素に hx- から始まる属性を付与するだけで機能を追加できるのが特徴です。

a-blog cms には Ver. 1.3(2011年リリース)から、POST リクエストで部分的に HTML を取得・表示できる post include 機能が存在しました。この機能により、ページの一部だけをサーバーから取得して差し替える仕組みを長く提供してきましたが、利用できるのは POST メソッドのみでした。

今回 a-blog cms Ver. 3.2 からは、この post include の発想を引き継ぎつつ、より柔軟でオープンな標準技術である htmx を採用しました。htmx では hx-post だけでなく、hx-get をはじめとする多様な HTTP メソッドを利用でき、より多くのユースケースに対応できます。これにより、長年推奨してきた post include 機能から、モダンで汎用的な htmx への移行を推奨しています。

主な特徴

  • シンプルな記述: hx-gethx-post などの属性を HTML に追加するだけで、非同期通信やコンテンツの差し替えが可能です。

  • サーバーサイドと相性が良い: 部分的な HTML(フラグメント)をサーバーから返すことで、複雑な JavaScript フレームワークを使わずに SPA ライクな体験を実現できます。

  • プログレッシブエンハンスメント: htmx を使ったページは、JavaScript が無効でも通常のリンクやフォームとして動作します。


基本構文の例

リンクで部分更新 : hx-get

<a href="/news/page/2"
   hx-get="/news/page/2/tpl/include/entry/news-list.html"
   hx-target="#news-list"
   hx-swap="innerHTML">
  もっと見る
</a>

<ul id="news-list">
  <!-- モジュールで出力された記事一覧 -->
</ul>

この例では、リンクをクリックすると /news/page/2GET リクエストを送り、 include/entry/news-list.html のテンプレートを利用し、news のカテゴリーの page/2 の結果の HTML を #news-list の中身に置き換えます。ページ全体のリロードは行われません。

フォーム送信で部分更新 : hx-post

<form hx-post=""
      hx-target="#search-result"
      hx-swap="outerHTML">
  <input type="hidden" name="tpl" value="/include/entry/search-result.html">
  <input type="text" name="keyword" placeholder="キーワード">
  <button type="submit" name="ACMS_POST_2GET_Ajax">検索</button>
</form>

<div id="search-result">
  <!-- 送信結果がここに表示される -->
</div>

この例では、フォーム送信時に POST リクエストをサーバーに送り、include/entry/search-result.html のテンプレートを利用し、キーワード検索結果の HTMLを #search-result 全体と置き換えます。


事前準備について

Ver. 3.2 からは不要に

a-blog cms Ver. 3.2 では、標準の 組み込み JavaScript に htmx が含まれるようになりました。これにより、HTML 要素に hx-gethx-post の属性を記述するだけで自動的にライブラリが読み込まれるため、事前の設定は必要ありません。

なお、JavaScript などで htmx の属性を後から付加する場合、ライブラリが読み込まれないタイミングが発生する可能性があります。そのような場合は、以下の <meta> タグをあらかじめ入れておくことで対応できます。

<meta name="acms-htmx" content="enable">

Ver. 3.1 までは、htmx.org のドキュメントに沿って <head> 内でライブラリを読み込み、設定を記述する必要があります。例えば以下のような準備が必要でした。参考として共有しておきます。

<script src="/js/htmx.min.js"></script>

<script>
  htmx.config.historyCacheSize = -1;
  htmx.config.refreshOnHistoryMiss = true;

  addEventListener('htmx:beforeHistoryUpdate', function (event) {
    const proposedUrl = event.detail.history.path;
    let customUrl = proposedUrl;
    if (proposedUrl.includes('/include/htmx/')) {
        customUrl = proposedUrl.replace(/\/include\/htmx\/.*\.html/, '');
    }
    event.detail.history.path = customUrl;
  });

  document.addEventListener("htmx:configRequest", function(event) {
      const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
      event.detail.headers['X-CSRF-Token'] = csrfToken;
  });

  addEventListener('htmx:afterSwap', function (event) {
    ACMS.Dispatch(event.target);
  });
</script>

Twigテンプレートの有効化


管理画面 > テーマ から、使用テーマの編集画面に入り「Twigテンプレート」を有効にすることで、Twig記法が利用することができるようになります。

テーマ設定のTwigテンプレートを有効に選択する
テーマ設定画面

もしくは、テーマ内の「template.yaml」を以下のように設定することでも可能です。

tpl_top : index.twig
tpl_index : index.twig
tpl_detail : _entry.twig
tpl_404 : 404.twig
tpl_admin : admin.html
tpl_entry_edit : _entry.twig
tpl_login : _member-admin/login.html
tpl_twig : enabled