【PHP8.3対応】Ver. 3.1.14 リリースのお知らせ


この記事では、2024年4月23日にリリースした Ver. 3.1.14 及び、Ver. 3.0.34、Ver. 2.11.63、Ver. 2.10.55 の修正内容について紹介いたします。

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

Ver. 3.1.14 リリースノート

変更点・新機能

  • CMS-6694 PHP8.2, 8.3対応
  • CMS-6618 プレビュー画面で直前で利用したデバイスの履歴を残せるように修正
  • CMS-6787 setup 機能を改善

修正点

  • CMS-6773 フォームの新規作成時にログの設定をしても反映されない問題の修正
  • CMS-6772 フォームの「ログを残さないようにする」機能が環境によっては動作しない問題の修正
  • CMS-6774 メディアダウンロードパスの解決が不十分で、シークレットブログや非公開ブログでメディアがダウンロードできない場合がある問題を修正
  • CMS-6777 Ver. 3.1.12 のセキュリティフィックスが原因でコンフィグのインポートが動作していない問題を修正
  • CMS-6784 /admin/module/setting.html のリンクの文言を「編集する」に統一
  • CMS-6769 エントリ編集画面でCategory_EntryListが動作すると、phpエラーが発生する不具合を修正
  • CMS-6785 resizeImg 校正オプションをスニペットのコード内で利用するように変更
  • CMS-6656 モジュールが空文字や真偽値を返す場合、API機能利用時に不正なJSONがレスポンスされてしまう問題の修正
  • CMS-6756 管理画面のメディア検索で、「年」「月」の両方を指定すると動作しない問題の修正
  • CMS-6753 データベースのバックアップ機能でキャッシュデータが保存されるテーブルもバックアップしてしまう問題の修正
  • CMS-6760 メールマガジン機能のテンプレートでメディアユニットが表示できない問題の修正
  • CMS-6696 カスタムユニットの中のグループのテキスト2つ目以降のテキストが全文検索でヒットしない問題の修正

Ver. 3.0.34 リリースノート

修正点

  • CMS-6776 Ver. 3.0.32 のセキュリティフィックスが原因でコンフィグのインポートが動作していない問題を修正

Ver. 2.11.63 リリースノート

修正点

  • CMS-6778 Ver. 2.11.61 のセキュリティフィックスが原因でコンフィグのインポートが動作していない問題を修正

Ver. 2.10.55 リリースノート

修正点

  • CMS-6779 Ver. 2.10.53 のセキュリティフィックスが原因でコンフィグのインポートが動作していない問題を修正

主なリリースノートの詳細な内容

CMS-6694 PHP8.2, 8.3対応

Ver. 3.1.14 より PHPバージョン 8.2 及び、8.3 に対応いたしました。

より新しいバージョンの PHP を利用することで、パフォーマンスやセキュリティ的にも改善が期待できます。是非 PHP 8.2 や、PHP 8.3 の環境で a-blog cms をご利用ください。

CMS-6618 プレビュー画面で直前で利用したデバイスの履歴を残せるように修正

プレビュー機能で、直前に利用したデバイスをブラウザ(ローカルストレージ)に保存するオプションを追加しました。


以前のバージョンでは、管理画面 > コンフィグ > 機能設定から設定している初期デバイスがプレビューボタン押下時のデバイスとして適用されていたため、初期デバイス以外のデバイスで閲覧したいユーザーは毎回デバイスを選択し直す必要がありました。


Ver. 3.1.14 より、管理画面 > コンフィグ > 機能設定から「直前に利用したデバイスをブラウザに保存する」オプションを有効にすることで、プレビュー機能利用中にデバイスを変更したことがブラウザ(ローカルストレージ)に保存され、次回プレビュー時に保存したデバイスが適用された状態でプレビュー機能を利用することができるようになります。


「直前に利用したデバイスをブラウザに保存する」オプションの設定画面

「直前に利用したデバイスをブラウザに保存する」オプションの設定画面


これにより、ユーザーは毎回デバイスを選択し直す必要がなくなり、記事の確認をスムーズに行うことができるようになります。

CMS-6787 setup 機能を改善


インストーラーのUIがキレイになりました。この画像はインストーラーの初期画面です。

インストーラーの初期画面


下記の点で setup (メンテナンスツール・インストーラー)の機能を改善しました。

  • DB の文字コード euc & sjis を廃止
  • DB の文字コード utf8mb4 を追加
  • media , storage のパーミッションチェック
  • .env ファイルの設定チェック
  • インストーラー&メンテナンスツールのレイアウトを調整
  • メンテナンスツール「カスタムフィールド検索フラグの修正」を非表示(対象が v1.4.0b2〜v1.4.0正式版が対象であったため)
  • ログアウトボタンを追加
  • 子ブログ同時インストール可能に修正(site[lp@site] のように指定)
  • エクスポート機能で media, media_tag, geo, entry_sub_category テーブルもエクスポートできるように修正

特に UI が変更されておりますので、今までの UI に慣れている方はお気をつけください。

CMS-6696 カスタムユニットの中のグループのテキスト2つ目以降のテキストが全文検索でヒットしない問題の修正

カスタムユニット内でフィールドグループを利用した場合、2つ目以降の入力欄に入力したデータが全文検索用データとして保存されていなかった問題を修正いたしました。

上記の問題により、以前のバージョンでは、カスタムユニット内でフィールドグループを利用した場合2つ目以降の入力欄に入力したデータでは全文検索機能で検索できておりませんでした。

Ver. 3.1.14 以降で保存したデータは問題ありませんが、以前のバージョンで保存されている全文検索用データは修正されておりません。そのため、管理画面 > データ修正 > フルテキスト修正 よりエントリーのフルテキストデータの再生成を行ってください。

フルテキスト修正を行うことで、以前のバージョンでカスタムユニット内でフィールドグループを利用して保存されている場合でも、全文検索で2つ目以降の入力欄に入力したデータが検索できるようになります。

最後に

該当する問題がありましたら、お早めにバージョンアップのご検討をお願いいたします。
また、迅速にご報告いただいたユーザーの皆さま、誠にありがとうございました。

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

Ver. 3.1.5 リリースのお知らせ


この記事では、2023年11月06日にリリースした Ver. 3.1.5 の修正内容について紹介いたします。

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

Ver. 3.1.5 リリースノート

  • CMS-6583 監査ログの連続通知を抑制する機能を追加
  • CMS-6546 タイトルをクリックしてのダイレクト編集ポップアップがすぐ閉じてしまい編集できない場合がある問題を修正
  • CMS-6545 メディアのファイル名にスペースが入っているとパスが切れてしまう問題を修正
  • CMS-6549 管理ページ上でテンプレート指定しているコンバーターが動作していない問題の修正
  • CMS-6553 メディアファイル名がマルチバイトだと校正オプションの「imageRatioSizeH」と「imageRatioSizeW」が正常に動作しない問題を修正
  • CMS-6547 WordPressインポート手順の文言を修正
  • CMS-6555 メディアのドロップエリアでファイル選択ダイアログからファイルを選択した場合、再度ファイル選択ダイアログの表示ができない問題の修正
  • CMS-6556 利用可能なキャッシュドライバーが見つからなかった場合の監査ログの文言を改善
  • CMS-6559 データベースアップデートが失敗した場合、PHPエラーが発生する問題の修正
  • CMS-6561 Navigation モジュールで項目を削除時のアラート文言を修正
  • CMS-6551 並列承認で承認機能を利用している場合、承認申請時のボタンテキストが「承認する」となっている問題の修正
  • CMS-6567 インクルード第2引数の変数指定で、キーがあり値が空の場合、デフォルト値が表示されない問題を修正
  • CMS-6568 Webhook 機能でフォームの送信イベント時にPHPエラーが発生する問題の修正
  • CMS-6571 Webhook 一覧ページのドロップダウンメニューが画面からはみ出る問題の修正
  • CMS-6573 メールアドレス変更フォームで、メールアドレスを未入力で送信するとPHPエラーが発生する問題の修正
  • CMS-6574 会員アイコン削除後の画面でデフォルトのアイコン画像が表示されない問題の修正
  • CMS-6577 パスワード強度チェッカーのメーター要素の不具合を修正
  • CMS-6581 エントリーの新規作成に失敗した場合、保存ボタンが表示される問題の修正
  • CMS-6582 デフォルト会員関連の「読者」を「会員」に統一、パスワードリセットタイトル修正
  • CMS-6580 ユニットが空の場合、環境によってPHPエラーが出る問題を修正
  • CMS-6557 監査ログのクリップボードにコピー機能が動作していない問題を修正
  • CMS-6584 config.system.yamlのデフォルト値でIPアドレスによる権限制限をしている場合、設定値が読み込まれない問題を修正

主なリリースノートの詳細な内容

CMS-6583 監査ログの連続通知を抑制する機能を追加

Ver. 3.1.0で追加された監査ログ機能には、重大なエラーが発生した時にメールで通知する機能がついています。

重大な問題に早く気が付くための便利な機能ですが、アクセスするごとに重大なエラーが発生する状態の場合に、大量の通知メールが届いてしまい迷惑な状態になってしまっていました。 そこでVer. 3.1.5 の修正で、設定された時間の間に、設定された数の通知を超えた時、一時的に通知を止める機能を用意しました。

設定値変更

設定は「.env」で行います。特に設定されていなくてもデフォルトの設定で有効になっております。

デフォルト設定は、3分間に10回通知があったら、60分間通知を止める設定になっています。



項目名 説明 デフォルト値
ALERT_COUNT_TO_PAUSE エラー通知を一時停止するアラート回数を指定します(回) 10
ALERT_COUNT_PER_MINUTE  エラー通知を一時停止するカウント範囲時間を指定します(分) 3
ALERT_PAUSE_TIME エラー通知を一時停止する時間を指定します(分) 60

「ALERT_COUNT_PER_MINUTE」分間の間に「ALERT_COUNT_TO_PAUSE」回以上アラートが発生した場合、「ALERT_PAUSE_TIME」分間通知を止める

CMS-6545 メディアのファイル名にスペースが入っているとパスが切れてしまう問題を修正

メディアファイルで、ファイル名に「スペース」が入っている場合、リンク切れを起こしてしまい、正常に画像を表示ができない状態でした。 Ver. 3.1.5 で、ファイル名にスペースが入っている状態でも、リンクが切れないように修正いたしました。

CMS-6567 インクルード第2引数の変数指定で、キーがあり値が空の場合、デフォルト値が表示されない問題を修正

Ver. 2.8.0 よりインクルード文で引数に変数を渡せるようになりましたが、デフォルト値の表示に問題がありました。

読み込み元

@include("/path/to/file", {"key": "value"})

読み込み先

<p>{{key}}</p>

この時、指定した引数が空だった場合、デフォルト値も指定できるようになっております。

デフォルト値

変数が空だったり引数として渡されなかった場合に、デフォルト値を設定できるようになっています。 |(パイプ)で区切り、default(" ") で定義できます。

{{key | default("デフォルト値")}}

この時、以下のように引数指定がない場合は、デフォルト値が適応されるのですが、キーはあるが、値が空だった場合は、デフォルト値ではなく、空として処理されていました。

デフォルト値が表示される場合

@include("/path/to/file")

デフォルト値が表示されない場合

@include("/path/to/file", {"key": ""})

今回、空文字の指定だった場合でも、デフォルト値が表示されるように修正いたしました。

インクルードのドキュメントをみる

最後に

該当する問題がありましたら、お早めにバージョンアップのご検討をお願いいたします。
また、迅速にご報告いただいたユーザーの皆さま、誠にありがとうございました。

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

Ver. 3.1.4 リリースのお知らせ


この記事では、2023年10月10日にリリースした Ver. 3.1.4 の修正内容について紹介いたします。

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

Ver. 3.1.4 リリースノート

  • CMS-6538 管理画面からのユーザーの削除時にPHPエラーが発生する問題の修正
  • CMS-6541 Ver. 3.1 でエントリー一覧系モジュールで「ログインしていなくてもシークレットブログ・カテゴリーのエントリーを表示する」設定をしている場合かつ管理者以外の場合、カテゴリーなしのエントリーが一覧に表示されない問題を修正
  • CMS-6540 Ver. 3.1 の Entry_Body で、エントリーを複数選択しての表示が最初の1件のみになってしまう問題を修正
  • CMS-6543 管理ページ > ユーザー編集ページで、ステータスが正常に表示されない問題の修正 & 管理ページでのユーザー保存時に、ユーザーアイコン画像が表示されない問題の修正

主なリリースノートの詳細な内容

CMS-6541 Ver. 3.1 でエントリー一覧系モジュールで「ログインしていなくてもシークレットブログ・カテゴリーのエントリーを表示する」設定をしている場合かつ管理者以外の場合、カテゴリーなしのエントリーが一覧に表示されない問題を修正

Ver. 3.1.0 〜 3.1.3 にて、エントリー一覧を表示するモジュールで特定の条件下だとカテゴリー適用されていないエントリーが一覧に表示されない問題を修正しました。
エントリー一覧を表示するモジュールの設定 > 表示設定「ログインしていなくてもシークレットブログ・カテゴリーのエントリーを表示する」にチェック(デフォルトはオフ)をして運用している場合は、アップデートをお願いいたします。


表示設定「ログインしていなくてもシークレットブログ・カテゴリーのエントリーを表示する」

詳細は「v3.1.x のエントリー一覧表示モジュールで、一部エントリーが表示されない不具合が発見されました」にてご確認お願いします。

CMS-6540 Ver. 3.1 の Entry_Body で、エントリーを複数選択しての表示が最初の1件のみになってしまう問題を修正

Ver. 3.1.0 〜 3.1.3 にて、Entry_Body モジュールの条件設定「引数」のエントリーIDを複数指定している場合に、表示設定の「表示件数」に関わらず1件のみのエントリー表示になってしまう問題を修正しました。


Entry_Body > 条件設定「引数」のエントリーIDを複数指定

Entry_Body モジュールでエントリーIDを複数指定している場合は、アップデートをお願いいたします。

CMS-6543 管理ページ > ユーザー編集ページで、ステータスが正常に表示されない問題の修正 & 管理ページでのユーザー保存時に、ユーザーアイコン画像が表示されない問題の修正

Ver. 3.1.0 〜 3.1.3 にて、ステータスを「無効」にしているユーザーを管理ページ(ユーザー管理 > ユーザー個別の編集ページの基本設定)から確認しても「有効」と表示されてしまう問題と、管理ページでユーザーを保存した時にユーザーアイコン画像が表示されない(リロードすると表示されます)問題を修正しました。


ユーザー管理 > ユーザー個別の編集ページの基本設定「ステータス」と「アイコン画像」

ユーザー操作されている場合は、アップデートをお願いいたします。

最後に

該当する問題がありましたら、お早めにバージョンアップのご検討をお願いいたします。
また、迅速にご報告いただいたユーザーの皆さま、誠にありがとうございました。

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

v3.1.0 〜 v3.1.2 でタイトルのダイレクト編集をするとユニットが消えてしまう不具合が発見されました


現象

以下の条件の場合、ダイレクト編集をするとユニットが消えてしまう不具合が発見されました

再現する環境

  • a-blog cms Ver. 3.1.0 〜 Ver. 3.1.2
  • ダイレクト編集で、エントリーのタイトルをクリックしてタイトルやカスタムフィールドを保存した場合

対応方法

この問題が修正された、Ver. 3.1.3 がリリースされています。Ver. 3.1.0 〜 Ver. 3.1.2 をお使いの場合は、お手数ですがアップデートをお願いいたします。


この度は、ご迷惑をおかけしてしまい大変申し訳ございませんでした。
大変お手数ですが、ご対応のほどよろしくお願いいたします。

a-blog cms Ver. 3.1.0 をリリースしました!


長らくお待たせいたしました。2023年09月14日にマイナーバージョンアップである Ver. 3.1.0 がリリースされました!多くの改善点がありますので、気になる機能からじっくりとご覧いただければと思います。

主な新機能・変更点

以下Ver. 3.1.0 の主な新機能・変更点になります。数が多いので、ページを分けて紹介しています。詳細は各ページでご覧ください。

※ 最後に変更点一覧を掲載しています。

会員機能を強化

  • CMS-6446 メールリンク認証機能(パスワードなしでのログイン機能)を追加
  • CMS-6431 一般会員と管理者ユーザーでログインURLを分けるように新しいテンプレートを作成 & ログイン機能全体の改修
  • CMS-6440 表側のテンプレートで、メールアドレス変更、パスワード変更、2段階認証設定、ユーザー情報変更画面を用意
  • CMS-6441 退会機能を追加
  • CMS-6478 カテゴリーにシークレットステータスを追加
  • CMS-6472 ログイン状態によって表示・非表示をする組み込みJSを追加「js-login-hidden, js-login-show, js-logout-hidden, js-logout-show」
  • CMS-6473 管理画面に読者一覧ページを作成 & 読者CSVダウンロード機能を追加
  • CMS-6468 読者ログイン時の場合、ページキャッシュを有効にする設定(subscriber_cache)を管理画面でも設定できるように修正

会員機能の詳細を見る

memberテーマを追加

  • CMS-6461 会員機能が入った、memberテーマを追加
  • CMS-6477 ログイン中だけエントリーの続きを閲覧できる会員限定記事機能を追加(memberテーマで実装)

memberテーマの詳細を見る

エントリー編集機能の改善

  • CMS-6379 wysiwygエディタを「CKEditor」から「Trumbowyg」に変更
  • CMS-6126 エントリーの排他制御機能(編集ロック機能)を追加(プロフェッショナルライセンス以上)
  • CMS-6136 バージョン管理でバージョンの公開予約機能を追加
  • CMS-6308 バージョン管理機能で、バージョンを上書き出来るように改善

エントリー編集機能改善の詳細を見る

監査ログ機能を追加

  • CMS-6125 監査ログ機能を追加(一部プロフェッショナルライセンス以上)

監査ログ機能の詳細を見る

管理機能の改善

  • CMS-6458 コンフィグセットに加えて、テーマセットと編集画面セットを追加 & グローバルオプションを追加
  • CMS-6124 ショートカット機能の編集権限及び投稿者権限で「条件設定」と「カスタム設定」の項目を編集できるように改良
  • CMS-6123 ライセンス切れ時にもキャッシュが効くように改良 & デバッグモードとベンチマークモードをユーザー詳細ページでユーザーごとに設定できるように改修(管理者のみ)
  • CMS-6135 同一ブログ内でのカテゴリーコードの重複許可オプション(category_order_strict_mode)を追加(新規インストール時デフォルトON)
  • CMS-6130 メディア編集画面でファイル名を変更する機能を追加
  • CMS-6188 エイリアス機能を管理画面でも有効になるように改修
  • CMS-6194 登録ドメイン以外でもサイトが表示できるように仕様変更(ライセンスと違うドメインの場合はnoindexとなる)
  • CMS-6215 WordPressのXMLインポートで、サムネイル画像URLをインポートできるように改善
  • CMS-6131 メディアでアップロードしたファイルのリンクに拡張子を含めるように変更
  • CMS-6322 フォームの添付ファイルの削除されるまでの時間をオプション化 & 添付ファイルの即時削除をしないオプションを追加 form_attached_file_delete_immediately: on # on | off フォーム送信後(メール送信後)に即時に添付ファイルをサーバー上から削除するか設定します form_attached_file_lifetime: 1800 # フォームの添付ファイルをサーバー上に残しておく秒数

管理機能改善の詳細を見る

テンプレート機能の改善

  • CMS-6462 インクルード文で使えるグローバル変数を追加できるHook(addGlobalVarsInIncludePath)を追加
  • CMS-6471 インクルード文に仕様できるグローバル変数に「%{CATEGORY_LEVEL}」を追加

テンプレート機能改善の詳細を見る

キャッシュ機能の改善 & Webhook機能の改善

  • CMS-6480 キャッシュドライバーにデータベースを追加しデフォルトドライバーをデータベースに変更
  • CMS-6448 webhook に「ユーザー」タイプを追加

キャッシュ機能改善 & Webhook機能改善の詳細を見る

互換性のない変更

ログインページ(login.html)をカスタマイズしている場合は、Ver. 3.1 にアップデートするとログインできなくなる可能性があります。カスタマイズしている場合は新しい仕様に合わせてテンプレートを修正するか、login.html を削除してsystemのテンプレートを利用するようにしてください。

ログインページのテンプレートについて詳しく見る

SNSログイン・SNS会員登録、Google Map以外の外部サービス連携機能が廃止になりました

廃止になった機能

  • Google Analyticsランキング(Api_GoogleAnalytics_Ranking)拡張アプリに移行
  • Twitterホームタイムライン(Api_Twitter_Statuses_HomeTimeline)
  • Twitterユーザータイムライン(Api_Twitter_Statuses_UserTimeline)
  • Twitterサーチ(Api_Twitter_Search)
  • Twitterリストタイムライン(Api_Twitter_List_Statuses)
  • Twitterリストメンバーズ(Api_Twitter_List_Members)
  • Bingウェブ検索(Api_Bing_WebSearch)
  • Bingイメージ検索(Api_Bing_ImageSearch)

リリースノート

新機能

  • CMS-6308 バージョン管理機能で、バージョンを上書き出来るように改善
  • CMS-6136 バージョン管理でバージョンの公開予約機能を追加
  • CMS-6125 プロフェッショナルライセンス以上で監査ログ機能を追加
  • CMS-6379 wysiwygエディタを「CKEditor」から「Trumbowyg」に変更
  • CMS-6431 一般会員と管理者ユーザーでログインURLを分けるように修正 & ログイン機能全体の改修
  • CMS-6454 メールアドレス変更、パスワード変更、2段階認証設定、ユーザー情報変更を、既存画面以外で自分自身用の専用画面を用意
  • CMS-6458 コンフィグセットに加えて、テーマセットと編集画面セットを追加 & グローバルオプションを追加
  • CMS-6446 メールリンク認証機能(パスワードなしでのログイン機能)を追加
  • CMS-6441 マイページから退会できる機能を追加
  • CMS-6461 会員機能が入った、memberテーマを追加
  • CMS-6462 インクルード文で使えるグローバル変数を追加できるHook(addGlobalVarsInIncludePath)を追加
  • CMS-6472 ログイン状態によって表示・非表示をする組み込みJSを追加「js-login-hidden, js-login-show, js-logout-hidden, js-logout-show」
  • CMS-6473 管理画面に読者一覧ページを作成 & 読者CSVダウンロード機能を追加
  • CMS-6477 ログイン中だけエントリーの続きを閲覧できる会員限定記事機能を追加
  • CMS-6478 カテゴリーにシークレットステータスを追加

変更点

  • CMS-6188 エイリアス機能を管理画面でも有効になるように改修
  • CMS-6194 登録ドメイン以外でもサイトが表示できるように仕様変更(ライセンスと違うドメインの場合はnoindexとなる)
  • CMS-6215 WordPressのXMLインポートで、サムネイル画像URLをインポートできるように改善
  • CMS-6216 タグフィルターとタグクラウドで、複数のブログ・カテゴリーを選択できるように改修
  • CMS-6244 ログイン制限機能で、ログイン画面の表示・表示も制御するように修正
  • CMS-6123 ライセンス切れ時にもキャッシュが効くように修正 & デバッグモードとベンチマークモードをユーザー詳細ページでユーザーごとに設定できるように改修(管理者のみ)
  • CMS-6300 .htaccessによる、メンテナンス表示を.htaccessにコメントで追加
  • CMS-6173 ユーザーアイコンで大きいサイズが使えるように変数を追加
  • CMS-6301 .htaccess に隠しファイルへのアクセスを禁止にする記述を追加
  • CMS-6135 同一ブログ内でのカテゴリーコードの重複許可オプション(category_order_strict_mode)を追加(新規インストール時デフォルトON)
  • CMS-6130 メディア編集画面でファイル名を変更する機能を追加
  • CMS-6406 developテーマ以外の各テーマのjsをビルドしないように修正 & CSSをminifyしないように修正
  • CMS-6345 フォーム機能で、メール送信しないオプションを追加
  • CMS-6322 フォームの添付ファイルの削除されるまでの時間をオプション化 & 添付ファイルの即時削除をしないオプションを追加
  • CMS-6445 読者登録モジュールのステップフォーム対応
  • CMS-6457 system/_layout/admin.html に @section navbar-admin-profile 、 navbar-admin-help を追加
  • CMS-6455 SNSログイン・SNS読者登録以外の外部サービス連携機能を廃止
  • CMS-6415 サイトテーマのカスタムユニットをcustom.htmlではなく、extend.html で拡張するように変更 & コンフィグセットの設定をVer. 3.1 に合わせて改善
  • CMS-6452 フォームの複製機能を追加
  • CMS-6448 webhook に「ユーザー」タイプを追加
  • CMS-6447 ユーザーのアイコンサイズ(現状64×64)を大きなサイズ(255x255)に変更(config.system.yaml -> user_icon_size で変更可 )
  • CMS-6131 メディアでアップロードしたファイルのリンクに拡張子を含めるように変更
  • CMS-6464 インストーラーに利用規約の同意画面を追加
  • CMS-6466 PHPのバージョンチェックをするように改善
  • CMS-6467 サブスクリプションのアクティベーションボタンをチェックリストから、ダッシュボードに移動
  • CMS-6468 読者ログイン時の場合、ページキャッシュを有効にする設定(subscriber_cache)を管理画面でも設定できるように修正
  • CMS-6471 インクルード文に仕様できるグローバル変数に「%{CATEGORY_LEVEL}」を追加
  • CMS-6476 各テーマのTwitterロゴをXロゴに差し替え
  • CMS-6124 ショートカット機能の編集権限及び投稿者権限で「条件設定」と「カスタム設定」の項目を編集できるように改良
  • CMS-6489 編集権限のないユーザーがをコンフィグのページにアクセスした場合、403ページを表示するように変更
  • CMS-5953 現在表示しているページと同じリンクのアンカー要素を消す組み込みJSをデフォルトOFFに変更
  • CMS-6480 キャッシュドライバーにデータベースを追加しデフォルトドライバーをデータベースに変更

バグフィックス

  • CMS-6252 acms.css のメディアクエリーで使用しているmax-widthの変数の値を小数点に変更
  • CMS-6267 Twitter Cardのsiteとcreatorの指定方法を見直し
  • CMS-6304 メディアファイルを削除した時に、サムネイル画像が消えない問題
  • CMS-6433 エンタープライズ版に承認機能有効時の編集権限設定項目がない問題を修正
  • CMS-6436 子ブログのユーザーでGoogleログインができない問題の修正
  • CMS-6129 Twitterログイン機能をPINコードを必要としないように改修
  • CMS-6450 Admin_Entry_Autocomplete モジュール、Entry_GeoListで引数を複数設定できるように修正
  • CMS-6451 PHP8.1でTwitterアプリケーションの Consumer Key と Consumer Secret をセットして、外部認証設定 ページにアクセスすると、null非推奨エラーが表示される問題及び、Twitter Developer Portal でコールバックURLが複数設定かつ、1つ目以外に設定されている場合、OAuth認証が失敗する問題の修正
  • CMS-6453 サブディレクトリにインストールした場合、公式テーマのアセットパスが通らない問題の修正
  • CMS-6456 Category_EntryList, Category_EntrySummaryで、複数のフィールド検索をするとPHPのエラーがでる問題を修正
  • CMS-6434 /index.html/ を index.html なしのURLにリダイレクトするように .htaccess を修正
  • CMS-6469 インストーラーで、データベースの作成が出来るように修正
  • CMS-6470 CMSアップデート時に、必要なくなったテーブルのすべてのカラムを選択するとエラーが出る問題を修正
  • CMS-6479 管理メニューをカスタマイズしているとCMSアップデートによる新メニュー出ない問題を修正
  • CMS-6481 ユーザーの切り替え機能で読者権限のユーザーに切り替えると、管理画面の権限がないためエラーになる問題を修正(リダイレクトで対応)& 元のユーザーに戻れるようにテンプレートを用意
  • CMS-6484 site テーマのヘッダーメニューに閉じタグのないHTMLが存在する問題の修正
  • CMS-6491 js-saving-splash が button タグでも動作するように修正

ダウンロードについて

ご利用いただくには、ダウンロードページから Ver.3.1.0 をダウンロードしてください。

  • 対応してるPHPバージョン:PHP7.2.5〜PHP8.1

本件に関するお問い合わせ先

有限会社アップルップル
メールアドレス:info@appleple.com
お問い合わせフォーム:https://www.a-blogcms.jp/contact/

日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。
今後とも a-blog cms のことをどうぞよろしくお願いいたします。

管理機能の改善 - Ver. 3.1.0 リリース情報


この記事では、2023年09月14日にリリースされた「Ver. 3.1.0」の管理機能の新機能・改善点について紹介しています。

開発・運用で便利になる変更が多くさせております。Ver. 3.1 の管理機能の変更点について学びましょう。

新機能・改善点一覧

  • CMS-6458 コンフィグセットに加えて、テーマセットと編集画面セットを追加 & グローバルオプションを追加
  • CMS-6123 ライセンス切れ時にもキャッシュが効くように改良 & デバッグモードとベンチマークモードをユーザー詳細ページでユーザーごとに設定できるように改修(管理者のみ)
  • CMS-6135 同一ブログ内でのカテゴリーコードの重複許可オプション(category_order_strict_mode)を追加(新規インストール時デフォルトON)
  • CMS-6130 メディア編集画面でファイル名を変更する機能を追加
  • CMS-6188 エイリアス機能を管理画面でも有効になるように改修
  • CMS-6194 登録ドメイン以外でもサイトが表示できるように仕様変更(ライセンスと違うドメインの場合はnoindexとなる)
  • CMS-6215 WordPressのXMLインポートで、サムネイル画像URLをインポートできるように改善
  • CMS-6131 メディアでアップロードしたファイルのリンクに拡張子を含めるように変更
  • CMS-6322 フォームの添付ファイルの削除されるまでの時間をオプション化 & 添付ファイルの即時削除をしないオプションを追加
  • CMS-6124 ショートカット機能の編集権限及び投稿者権限で「条件設定」と「カスタム設定」の項目を編集できるように改良
  • CMS-6482 ショートカット機能のコンフィグセット対応
  • CMS-6483 ショートカット機能で複数種類のID(モジュールID × ルールIDなど)の掛け合わせに対応

CMS-6458 コンフィグセットに加えて、テーマセットと編集画面セットを追加 & グローバルオプションを追加

大きな機能変更ではありませんが、サイト制作において大きく恩恵がある機能になります。コンフィグセット機能はいままでもあった機能ですが、コンフィグセットでコンフィグを統一してもコンテンツ毎にテーマや編集画面は変わることが多いため、コンフィグセットが利用しずらい状況でした。

またコンフィグセットでベースのコンフィグを統一して、テーマや編集画面はルール機能を使って、別のコンフィグを当てる方法がありましたが、ルール機能を使うとどのようなコンフィグが当たっているか分かりづらく設定が複雑になる傾向があります。

そこで、Ver. 3.1 ではコンフィグセットの設定内容を「コンフィグセット」「テーマセット」「編集画面セット」の3つに分割するようにしました。


コンフィグセット

コンフィグセット


テーマセット

テーマセット


編集画面セット

編集画面セット


作成したコンフィグセット、テーマセット、編集画面セットは、ブログ・カテゴリーにセットできるようになっております。

これにより、コンフィグセットは、サイト全体で共通のコンフィグセットを使用し、テーマだけブログ毎に別のテーマを当てるなどが簡単に出来るようになりました。 また編集画面もコンテンツ毎に変更することが多いので、編集画面もブログとカテゴリー毎に用意している編集画面セットを別々に設定でき便利になります。


ブログの設定画面

ブログの設定画面


カテゴリーの編集画面

カテゴリーの編集画面


コンフィグセットの継承機能

さらに便利な機能として各セットを子ブログ、子カテゴリーにも継承できるようになりました。

ブログ・カテゴリーの編集画面で「子ブログ(カテゴリー)にも継承する」チェックボックスにチェックをつけることで、チェックをつけたセットが子ブログ(カテゴリー)にも反映されます。

* 子ブログ(カテゴリー)ではセットが選択されていない必要があります。子ブログ(カテゴリー)でセットが選択されている場合は、そのセットが適応されます



具体的な例で見ていきましょう。

例えば、通常のサイトであれば、テーマ設定や編集画面はブログ、カテゴリー毎に変更する事は多いですが、基本的な設定であるキャッシュ設定や機能設定、アクセス設定などはサイト全体を通して、共通のコンフィグで問題ない場合は多くあります。

このような時、ルートブログでコンフィグセットを選択し、子ブログにも継承するようにする事で、サイト全体のコンフィグをコンフィグセット1つで管理することが出来るようになります。 BASIC認証の設定などブログ毎に設定するのが大変だったと思いますが、1つ設定すればいいので、開発・運用がぐっと楽になります。

CMS-6123 ライセンス切れ時にもキャッシュが効くように改良 & デバッグモードとベンチマークモードをユーザー詳細ページでユーザーごとに設定できるように改修(管理者のみ)

ライセンス切れ時にもキャッシュが効くように改良

いままではライセンスが正式ライセンスではない場合、キャッシュ機能が利用できない状態でしたが、Ver. 3.1 で正式ライランスが当たってない状況でも、キャッシュが利用できるようにいたしました。

変更意図

変更意図として、出来るだけ本番運用時と開発時の差分を少なくしたかっためです。開発環境では問題なかったのに、キャッシュの問題で本番環境でうまく動作しないなどの可能性があるため、出来るだけ開発環境と本番環境で同一の動作をするようにいたしました。

* 正式ライセンスでない場合「noindex」になるのは、引き続き同じ動作となります。

デバッグモードとベンチマークモードをユーザー詳細ページでユーザーごとに設定できるように改修(管理者のみ)

いままでサイトの調査をするときに、config.server.php を編集してデバッグモードやベンチマークモードに変更していました。ただこのやり方だと、全ユーザーに影響が出て、変更忘れなどあった場合に、影響が続いてしまいます。

そこでVer. 3.1では、管理ユーザーの場合のみ、ユーザー編集画面で、そのユーザー限定でデバッグモードとベンチマークモードになることが出来るオプションを用意しました。これにより、気軽にデバッグモードやベンチマークモードを試せるようになりました。


ユーザー編集画面でモード設定

ユーザー編集画面でモード設定


またこの機能変更に合わせて、config.server.phpの「DEBUG_MODE」はデフォルトオフ(0)に変更いたしました。DEBUG_MODEの変更忘れを防ぐためになります。

CMS-6135 同一ブログ内でのカテゴリーコードの重複許可オプション(category_order_strict_mode)を追加(新規インストール時デフォルトON)

いままで同一ブログ内でのカテゴリーコードは重複できない仕様でした。例えば以下のような構造は設定できませんでした。

news(全体のお知らせ)
products(製品情報)
┗ news(製品のお知らせ)
recruit(採用情報)
┗ news(採用情報のお知らせ)

ブログを分ければ、同じカテゴリーコードを利用できたのですが、この制限が理由でブログを分ける必要がなくなったので、よりカテゴリーが利用しやすくなったと思います。

重複許可のオプション設定

この設定は新規インストール時はデフォルトで有効になっていますが、アップデートの場合は無効になっております。というのも以前の仕様だと動作に不具合が起きる可能性があるためです。

設定箇所は「private/config.system.yaml」で行います。

category_order_strict_mode: on # on | off カテゴリー親子関係を厳密に指定したURLでないと404になるモード。onだと同ブログ内でも同じ階層でなければ同名のカテゴリーコードを設定可能

CMS-6130 メディア編集画面でファイル名を変更する機能を追加

いままでは、メディア機能でアップロードした画像やファイルのファイル名を後から変更することができませんでしたが、今回変更できるようになりました。メディアの編集画面で編集できます。


メディアの編集画面

メディアの編集画面


CMS-6131 メディアでアップロードしたファイルのリンクに拡張子を含めるように変更

メディア(ファイル)のパーマリンクURLの仕様を変更いたしました。URLの最後にファイルの拡張子が入るようになりました。これでURLからどのようなファイルか判定できるようになります。

今までのURL

https://example.com/media-download/xx/xxxxxxxxxx/

変更されたURL

https://example.com/media-download/xx/xxxxxxxxxx/PDF/

古い仕様のURLでも問題なくアクセスできます。互換性はありますので安心して利用ください

CMS-6188 エイリアス機能を管理画面でも有効になるように改修

少しマニアックな機能ですが、ドメイン拡張ライセンスを入れて、エイリアス機能で別のドメインを設定している場合があります。

例えば、example.comというサイトがあり、en.example.com や zh.example.com のようにエイリアスで多言語対応をしている場合です。 この時今までの仕様だと各ドメインで管理ページにアクセスはできず、管理ページは基本となる1つのドメインでしかアクセスできない状況でした。(リダイレクトされる)

この仕様により、勝手にドメインが変わるので、混乱の元になり、またドメインが変わるので、セッションが切れやすい状況になっていました。

この仕様をVer. 3.1 で変更し、今閲覧しているドメインのまま管理ページにアクセス出来るようになりました。

CMS-6194 登録ドメイン以外でもサイトが表示できるように仕様変更(ライセンスと違うドメインの場合はnoindexとなる)

いままでは、ブログで設定されたドメインまたは、拡張ライセンスで追加されたドメイン以外でサイトにアクセスするとサイトは表示できませんでした。このように制限が厳しい状態だと、サイト切り替え時など不便なことが多いので、ブログで設定されていないドメインでも a-blog cms が設置されているドキュメントルートへアクセスされるURLであれば、サイトは表示するように修正しました。

具体的な例でみると、例えばサイトリニューアルでDNSを変更してサイトを公開する場合、CMSのドメインを本番用ドメインにしたあとだと、各閲覧環境でhostsファイルを書き替えないとサイトが閲覧できない状況になっていたと思います。これが新しいサーバーの仮ドメインやIPアドレスでもサイトが閲覧できるようになったので、hostsファイルの変更が要らず共有しやすくなったと思います。(サーバー環境によってはhostsファイルを変更しないと見れない場合もあります)

他の例だと、開発環境でローカル環境と社内サーバーでデータベースを共通化している場合などに、ドメインが別々になっていると思います。このような時もどちらかが見えなくなってしまうことなく、両環境でサイトを閲覧することができるようになります。

注意点としてサイトは閲覧できますが、ライセンスと違うドメインの場合はnoindexとなります

CMS-6215 WordPressのXMLインポートで、サムネイル画像URLをインポートできるように改善

以前からWordPressのエクスポートデータのインポート機能はあり、エントリーとして記事が作成できましたが、一覧でインポートした時サムネイル画像が表示できず、サムネイル画像は手動で登録するなど、実用面で問題がありました。

そこで今回、WordPressのメディアエクスポートデータからアイキャッチ画像URLをカスタムフォールドにインポートする機能を追加いたしました。

注意ポイント

注意点として、必ず投稿データのインポートを行った後、アイキャッチ画像URLのインポートを行うようにしてください。


WordPressデータのインポート画面

WordPressデータのインポート画面


CMS-6322 フォームの添付ファイルの削除されるまでの時間をオプション化 & 添付ファイルの即時削除をしないオプションを追加

フォーム機能で添付ファイルをする機能があります。こちらはフォーム入力でアップロードした後、フォーム送信が完了すると自動的にサーバーから削除するのですが、フォームを離脱してしまうと、ファイルがサーバーに残ってしまいます。そこでアップロードから30分たったファイルは自動的に削除するようになっていました。

今回この自動削除の機能をオプション化して値を設定できるようにしました。設定は「private/config.system.yaml」で行います。

form_attached_file_delete_immediately: on # on | off フォーム送信後(メール送信後)に即時に添付ファイルをサーバー上から削除するか設定します
form_attached_file_lifetime: 1800 # フォームの添付ファイルをサーバー上に残しておく秒数

特にこの設定はデフォルトで問題ありませんが、何か特別な処理をしたい場合などにご活用ください。

CMS-6124 ショートカット機能の編集権限及び投稿者権限で「条件設定」と「カスタム設定」の項目を編集できるように改良

Ver. 3.1 では、ショートカット機能で「編集者」権限及び「投稿者」権限にモジュールIDの編集権限を与えた場合でも「条件設定」や「カスタム設定」の設定項目を編集できるようになりました。

特に、「カスタム設定」の項目の編集ができるようになることで、「管理者」権限は与えたくないが、「編集者」権限や「投稿者」権限でも編集できるようにしたいデータについては、モジュールのカスタムフィールドとして制作するといった選択ができるようになりました。

Ver. 3.1 以降のバージョンで作成したモジュールIDのショートカットのみ「条件設定」と「カスタム設定」の設定項目を「編集者」権限や「投稿者」権限で編集できるようになります。
Ver. 3.1 未満のバージョンで作成したモジュールIDのショートカットは管理者のみ「条件設定」と「カスタム設定」の設定項目のみ編集できる仕様となりますので、ご注意ください。


管理画面 > ダッシュボードにあるショートカット一覧

管理画面 > ダッシュボードにあるショートカット一覧


CMS-6482 ショートカット機能のコンフィグセット対応

Ver. 3.1 からコンフィグセットに紐付けられたコンフィグのショートカットを作成できるようになりました。

Ver. 3.1 未満のバージョンではコンフィグセットのページからショートカットを追加した場合、「このブログの初期コンフィグ」へのショートカットとなる仕様でした。
しかし、コンフィグセットを利用している場合、ショートカットが利用できないことになってしまうため、Ver. 3.1 ではコンフィグセット紐付けられたコンフィグのショートカットも作成できるように改善いたしました。

これにより、コンフィグセットを利用しているサイトでもよく設定するコンフィグをショートカットに登録できるようになり、より便利にサイトを運用することができるようになったのではないでしょうか?

CMS-6483 ショートカット機能で複数種類のID(モジュールID × ルールIDなど)の掛け合わせに対応

Ver. 3.1 からはモジュールID、ルールID、コンフィグセットIDを掛け合わせた編集ページをショートカットに登録することができます。

具体的には以下のケースに対応可能です。

  • 特定のルール下でのモジュール編集ページ
  • 特定のルール下でのコンフィグ編集ページ

ルールをご利用のサイトの場合、運用者にってより更新しやすい管理画面を提供可能になりました。

管理機能改善の紹介については以上になります。他 Ver. 3.1.0 の新機能・改善も多くありますので、ぜひご覧ください。

日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。
今後とも a-blog cms のことをどうぞよろしくお願いいたします。

エントリー編集機能の改善 - Ver. 3.1.0 リリース情報


この記事では、2023年09月14日にリリースされた「Ver. 3.1.0」の「エントリー編集機能」の新機能・改善点について紹介しています。

大きい変更として、WYSIWYGエディタが「CKEditor」から「Trumbowyg」に変更されました。またバージョン管理を使いやすいように仕様変更し、プロフェッショナル版以上でエントリーの排他制御機能(編集ロック)が追加されました。

新機能・改善点一覧

  • CMS-6379 wysiwygエディタを「CKEditor」から「Trumbowyg」に変更
  • CMS-6126 エントリーの排他制御機能(編集ロック機能)を追加(プロフェッショナルライセンス以上)
  • CMS-6308 バージョン管理機能で、バージョンを上書き出来るように改善
  • CMS-6136 バージョン管理でバージョンの公開予約機能を追加

CMS-6379 wysiwygエディタを「CKEditor」から「Trumbowyg」に変更

WYSIWYGエディタが「CKEditor」から「Trumbowyg」に変更されました。UIが変わってしまい申し訳ございませんが、機能としてはほぼ同じことが出来るようになっておりますのでご安心ください。

Trumbowyg 公式ページ


新しいWYSIWYGエディタ

新しいWYSIWYGエディタ


通常テキストユニットのプルダウンメニューで「WYSIWYG」を選択すると、入力フィールドが「Trumbowyg」に切り替わりますが、今までと同様カスタムフィールドなどのカスタマイズした入力欄にもWYSIWYGを適応できるようになっております。

任意の入力フィールドを「Trumbowyg」にする

HTMLの書き方

以下のようにクラスに「js-wysiwyg」を設定すると、設定された「textarea」が「Trumbowyg」による編集欄になります。

<textarea name="textarea" class="js-wysiwyg"></textarea>

* デフォルトでは、互換性を保つため今まで指定していた「js-ckeditor」でも発火するようになっています。詳しくは以下設定をご覧ください。

設定方法

config.js で設定を変更することができます。

wysiwygMark: 'textarea.js-wysiwyg,textarea.js-ckeditor,textarea.js-emoditor', // 発火するクラス名を指定します
wysiwygConfig:
{
  lang: 'ja', // 言語を指定します
  // resetCss: true, // 「true」で、trumbowygのリセットCSSを適応します
  autogrow: true, //「true」で、編集欄の高さを入力内容によって自動で大きくします
  tagsToRemove: ['script'], // sciriptタグを入力できないようにします
  btns: [ // エディタのボタン設定
    ['viewHTML'], // HTMLを表示します
    ['undo', 'redo'], // 一つ戻る、一つ進む
    ['formatting'], // 段落、見出しなどのフォーマット
    ['fontsize'], // フォントサイズ
    ['lineheight'], // ラインハイト
    ['strong', 'em', 'del'], // <strong>, <em>, <del> タグ
    // ['superscript', 'subscript'], // 上付き文字、下付き文字
    ['foreColor', 'backColor'], // 文字色、背景色
    ['link'], // リンク挿入
    ['justifyLeft', 'justifyCenter', 'justifyRight'], // 左寄せ、中央寄せ、右寄せ
    ['unorderedList', 'orderedList'], // リスト、番号リスト
    ['horizontalRule'], // 水平方向の罫線
    ['table', 'tableCellBackgroundColor', 'tableBorderColor'], // テーブル、テーブルのセルカラー、テーブルのボーダーカラー
    ['removeformat'], // スタイルを削除
    ['fullscreen'], // フルスクリーン
  ],
  tagClasses: {
    // table: 'class-name', // テーブルのクラス名
  },
},

設定を変更する時は「js/config.js」を直接上書きすのではなく、各テンプレートで以下のように変更ください。

<script>
ACMS.Ready(function() {
    ACMS.Config.autogrow  = false;
});
</script>

参考 - 組み込みJSの設定を変更する

CMS-6126 エントリーの排他制御機能(編集ロック機能)を追加(プロフェッショナルライセンス以上)

プロフェッショナル版以上で、エントリーにロックがかけれるようになりました。これにより意図しないエントリーの上書きでのデータ消失のリスクが減ります。

動作の流れ

エントリーを編集していて、保存ボタンを押すまでは、編集中のエントリーにロックが自動でかかります

ロック中は、以下のスクリーンショットのように、エントリー一覧からロックがかかっていることが分かるようになっています。 自分がロックしている場合と、他のユーザーがロックしている場合で、違うアイコンが表示されるようになっています。


他のユーザーがロックしている場合の表示

他のユーザーがロックしている場合の表示


自分がロックしている場合の表示

自分がロックしている場合の表示


自分ではない他のユーザーが、編集中(ロック中)のエントリーの編集画面を開くと、以下のようなスクリーンショットが表示され、ロックしているユーザーや編集日時がわかるようになっています。


ロック中に表示されるアラート

ロック中に表示されるアラート


アラートを閉じれば、この状態でもエントリーの編集は可能になっておりますが、保存をすると以下スクリーンショットのエラーが出て保存できないようになっています。ではなぜ編集できるようになっているかというと、違うバージョンでの保存はロックがかかっていても保存はできるためになります。


ロック中のエントリーを保存した時のアラート

ロック中のエントリーを保存した時のアラート


エントリーの編集中に編集をやめページを離脱した場合はロックが残ってしまいます。このような時は、再度エントリー編集ページを開いて保存をするか、以下スクリーンショットにあるようにエントリー一覧から、ロックアイコンをクリックするこで、ロックを解除することが出来ます。


ロックの解除

ロックの解除


コンフィグ設定

管理ページ > コンフィグ > 機能設定に「エントリー同時編集ロック」のコンフィグがあります。

  • 同時編集ロック機能:チェックをつけると機能が有効になり、外すと機能が無効になります。
  • アラートのみ:チェックをつけると、ロックされている事のアラートは表示されますが、アラートを無視して保存できるようになります
  • ロック有効期限:ロックの有効期限を設定します。この期間を過ぎたロックは自動的に解除されます。

エントリー同時編集ロックのコンフィグ

エントリー同時編集ロックのコンフィグ


CMS-6308 バージョン管理機能で、バージョンを上書き出来るように改善

いままでのバージョン管理では一度作成されたバージョンを変更することはできなかったのですが、Ver. 3.1 では、バージョンを上書きできるようになりました。

改善の経緯

バージョン管理機能は、承認機能と密接に関わっている機能になります。多段階の承認で、最初の承認がされた後に、バージョンを上書きできてしまうと、承認後の変更になるので、承認の意味がなくなってしまうという考えで、バージョンの上書きはできないようになっておりました。

ただ承認機能ができてからしばらくの期間を経て、記事公開まで何度も承認・修正を繰り返すことが多く、この仕様だと運用が大変になるという結論となりました。 今回バージョンを上書き出来るようになり、多段階認証で承認後でも記事の編集が出来るようになりましたが、承認画面でコメントを残してやり取りができ、最終的には最後の承認を通らないと記事は公開されないので、承認機能としての役割は十分果たしていると思います。

また承認機能を利用されない方が一般的だと思います。バージョンを上書きできることで、あらかじめ更新予定の記事をバージョンで作成しておくこともより便利になったと思います。

バージョン保存ボタン

Ver. 3.1 では、バージョンを表示中「このバージョンを保存」と「新規バージョンとして保存」の2つになりシンプルでわかりやすくなりました。


今までのバージョン保存

今までのバージョン保存


新しくなったバージョン保存

新しくなったバージョン保存



CMS-6136 バージョン管理でバージョンの公開予約機能を追加

いままでの機能だと、新規記事を公開予約することは出来たのですが、記事更新を公開予約する機能はありませんでした。*1
なので更新内容をバージョンとして作成していても、切り替えるには手動でバージョンを切り替える必要がありました。

そこで、Ver. 3.1 ではバージョンの公開予約機能を追加し、記事の更新でも時間を指定してバージョンが切り替わる仕組みを用意しました。

*1 正確には、エントリーコードが同じエントリーを2つ用意して、公開日時と掲載期間を切り替え日時に合わせれば可能でしたが、公開予約のたびにエントリーを増やさないといけませんでした

公開済みのエントリーで、更新内容を公開予約する手順

1. バージョンを切り替えたい日時を「公開日時」に設定します


公開日時を設定

公開日時を設定


2. 公開日時に設定と編集ができたら「新規バージョン」として保存します


新規バージョンとして保存

新規バージョンとして保存


3. さらに編集したい場合は「このバージョンを」を選択して保存します(何度もOK)


このバージョンを保存

このバージョンを保存


4. 編集が完了したら編集したバージョンの確認をします


バージョン管理ボタンを押して、バージョン一覧を表示

バージョン管理ボタンを押して、バージョン一覧を表示


バージョン一覧から編集したバージョンの確認ボタンを押す

バージョン一覧から編集したバージョンの確認ボタンを押す


5. 「このバージョンを公開予約」ボタンを押して公開予約する


公開予約の実行

公開予約の実行


以上、エントリー更新の公開予約手順でした。予定している時間になると、自動的にバージョンが切り替わり記事の更新が完了します。

また公開予約が完了すると、ダッシュボードの「公開/掲載終了予定の記事」にエントリーが出現します。キャッシュもバージョン切り替え時に自動的にクリアするので、キャッシュの時間設定は気にしなくても問題ありません。


公開/掲載終了予定の記事

公開/掲載終了予定の記事


エントリーの編集機能の改善紹介については以上になります。他 Ver. 3.1.0 の新機能・改善も多くありますので、ぜひご覧ください。

日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。
今後とも a-blog cms のことをどうぞよろしくお願いいたします。

会員機能を強化 - Ver. 3.1.0 リリース情報


この記事では、2023年09月14日にリリースされた「Ver. 3.1.0」の「会員機能」の新機能・改善点について紹介しています。

今回会員機能が大幅にアップデートされました。これにより会員サイトが作りやすくなりましたので、会員サイトの提案がよりしやすくなったと思います。 会員機能に関係する変更点について具体的にみていきます。

新機能・改善点一覧

  • CMS-6446 メールリンク認証機能(パスワードなしでのログイン機能)を追加
  • CMS-6431 一般会員と管理者ユーザーでログインURLを分けるように新しいテンプレートを作成 & ログイン機能全体の改修
  • CMS-6440 表側のテンプレートで、メールアドレス変更、パスワード変更、2段階認証設定、ユーザー情報変更画面を用意
  • CMS-6441 退会機能を追加
  • CMS-6478 カテゴリーにシークレットステータスを追加
  • CMS-6472 ログイン状態によって表示・非表示をする組み込みJSを追加「js-login-hidden, js-login-show, js-logout-hidden, js-logout-show」
  • CMS-6473 管理画面に読者一覧ページを作成 & 読者CSVダウンロード機能を追加
  • CMS-6468 読者ログイン時の場合、ページキャッシュを有効にする設定(subscriber_cache)を管理画面でも設定できるように修正

CMS-6446 メール認証ログイン機能(パスワードなしでのログイン機能)を追加

会員だけの機能ではありませんが、ログイン・サインインする方法に新しい方法が増えました。 今まではメールアドレスとパスワードもしくはSNSによるログイン方法がありましたが、これらに加え今回メールアドレスだけでログインできる機能が追加されました。

設定方法

メール認証ログイン機能を有効にするには、管理ページ > コンフィグ > ログイン設定 で行います。

管理者や編集者の管理ログインと、一般ユーザーである読者によるサインインで別々に利用するか設定できるようになっております。 また、メール送信からリンクアクセスまたは、確認コード入力までの有効期限を設定できます。セキュリティのため出来るだけ短い時間を設定ください。

* デフォルトでは、メール認証ログイン機能は管理ログイン・サインインともにオフです。


メール認証ログインの設定

メール認証ログインの設定


ログイン・サインインの流れ

1. ログイン画面にアクセス

通常通りログイン画面にアクセスします。通常とは違いメールアドレスだけの入力欄が表示されます


メール認証ログイン画面

メール認証ログイン画面


2. 登録されているメールアドレスを入力

ログインするアカウントのメールアドレスを入力して「メールを送信」ボタンを押すと、以下スクリーンショットの画面になります。


メール送信後の画面

メール送信後の画面


3. 届いたメールにあるリンクにアクセスするか、確認コードをログインフォームに入力する

届いたメールの「管理ログイン」ボタンリンクを押すか、確認コードをログインフォームに入力して「認証する」ボタンを押すことで、ログインができます。


届いたメール

届いたメール


メールアドレスだけでの認証になるので、毎回メールが届きログインが少し面倒になりますが、パスワードを覚えておく必要がないため、便利に利用できます。ぜひご利用ください。

管理ログインと一般サインインを分離 & ログイン、会員登録、会員情報更新周りのテンプレートを新しく用意

  • CMS-6431 一般会員と管理者ユーザーでログインURLを分けるように新しいテンプレートを作成 & ログイン機能全体の改修
  • CMS-6440 表側のテンプレートで、メールアドレス変更、パスワード変更、2段階認証設定、ユーザー情報変更画面を用意
  • CMS-6441 退会機能を追加

会員機能周りのテンプレートを大幅に改善・追加いたしました。またセキュリティ向上のため、サイトを管理する人のログインと、会員としてログインするページは別々にするように変更いたしました。

各ページとデフォルトURLの紹介



ページ 説明 デフォルトURL
管理ログインページ 管理ユーザーがログインするためのページです /login/
管理ユーザー用パスワード再設定ページ 管理ユーザーがパスワードを忘れた時、パスワードを再設定するページです /admin-reset-password/
サインインページ 一般ユーザーがサインインするためのページです /signin/
会員登録ページ 一般ユーザーが会員登録するためのページです /signup/
一般ユーザー用パスワード再設定ページ 一般ユーザーがパスワードを忘れた時、パスワードを再設定するページです /reset-password/
プロフィール更新ページ ログイン後、自身のプロフィールを変更するページです /mypage/update-profile/
メールアドレス変更ページ ログイン後、自身のメールアドレスを変更するページです /mypage/update-email/
パスワード変更ページ ログイン後、自身のパスワードを変更するページです /mypage/update-password/
2段階認証設定ページ ログイン後、2段階認証の設定を行うページです /mypage/update-tfa/
退会ページ 退会ページです /mypage/withdrawal/

管理ユーザーと一般(会員ユーザー)について

管理ユーザーと一般ユーザーをどのように分けているかについて説明いたします。

デフォルト設定



タイプ ユーザー権限
管理ユーザー 管理者・編集者・投稿者
一般ユーザー 読者

デフォルトでは、読者権限のみが一般ユーザーになります。

設定変更

管理画面 > コンフィグ > ログイン設定 の「基本設定」にある「一般サインイン権限」で設定を行います。

  • 読者のみ: 読者のみ一般ユーザーとして扱います
  • 投稿者以下:読者と投稿者を一般ユーザーとして扱います


これらの区分により、管理ユーザーは一般サインイン画面からログインはできなくなり、一般ユーザーは管理ログイン画面からログインできなくなります。

新しいテンプレート構造

ログインページ(login.html)をカスタマイズしている場合は、Ver. 3.1 にアップデートするとログインできなくなる可能性があります。カスタマイズしている場合は新しい仕様に合わせてテンプレートを修正するか、login.html を削除してsystemのテンプレートを利用するようにしてください。

ログイン周り、会員機能回りの新しいテンプレート構造について、管理ユーザー向けのテンプレートと一般会員向けのテンプレートを分けて紹介します。

管理ユーザー向けのテンプレート

themes/system/_member-admin/ 以下が管理ユーザー向けのテンプレートになります。以下テーブルでは、themes/system/_member-admin/ 以下のファイルになります。



パス 説明
login.html 管理ログインするテンプレート
reset-password.html 管理ユーザーのパスワード再設定のためのテンプレート
reset-password-auth.html 管理ユーザーのパスワード再設定リンク先のテンプレート
tfa-recovery.html 管理ユーザーが2段階認証を解除するためのテンプレート
parts/error.html 汎用エラーメッセージのパーツ
parts/header.html 各フォームのヘッダーパーツ
parts/sns-message.html SNS認証に失敗した時のメッセージパーツ
parts/login/sns.html SNS認証によるログインパーツ

会員向けのテンプレート

themes/system/_member/ 以下が管理ユーザー向けのテンプレートになります。以下テーブルでは、themes/system/_member/ 以下のファイルになります。



パス 説明
signin.html 会員サインインするためのテンプレート
signup.html 会員登録するためのテンプレート
reset-password.html 会員のパスワード再設定するためのテンプレート
reset-password-auth.html 会員のパスワード再設定リンク先のテンプレート
tfa-recovery.html 会員が2段階認証を解除するためのテンプレート
update-email.html ログイン後、メールアドレスを更新するためのテンプレート
update-password.html ログイン後、パスワードを更新するためのテンプレート
update-profile.html ログイン後、ユーザー情報を更新するためのテンプレート
update-tfa.html ログイン後、2段階認証を設定・解除するためのテンプレート
withdrawal.html 会員の退会テンプレート
parts/error.html 汎用エラーメッセージのパーツ
parts/field-confirm.html 会員登録時の確認画面で表示するカスタムフィールドパーツ
parts/field-input.html 会員登録時の確認画面で表示するカスタムフィールドパーツ
parts/header.html 各フォームのヘッダーパーツ
parts/sns-message.html SNS認証に失敗した時のメッセージパーツ
parts/profile/geo.html マイページプロファイル変更の位置情報パーツ
parts/profile/sns.html マイページプロファイル変更のSNS連携用パーツ
parts/signin/sns.html サインインページのSNSログインパーツ
parts/signup/auth.html 会員登録時の認証メールのURLにアクセスした時のパーツ
parts/signup/confirm.html 会員登録時の確認画面のパーツ
parts/signup/error.html 会員登録時のエラー表示パーツ
parts/signup/input.html 会員登録時の入力画面パーツ
parts/signup/input2.html 会員登録時の入力画面パーツ2
parts/signup/result.html 会員登録時の完了画面パーツ
parts/signup/sns.html SNS認証による会員登録パーツ

以上のテンプレートをカスタマイズして、会員ページを作成ください。テンプレート数は多いですが、すべてテンプレート継承をしているので、カスタマイズはしやすいと思います。

会員登録フォームの入力を複数ページに分ける

会員登録フォームで情報入力が多い場合2ページ以上に入力フォームを分割する方法について解説します。

まずベースとなるテンプレートにブロックとインクルード文を追加します。ページ数に応じて追加する数を変えてください。 デフォルトでは、2ページ目は仕込まれているので、2ページの場合は特に修正は必要ありません。

_member/signup.html

<!-- BEGIN step#2 -->
@include("/_member/parts/signup/input2.html")
<!-- END step#2 --

次に1ページ目となる入力フォームのテンプレートを修正します。

_member/parts/signup/input.html

「内容を確認する」ボタンと次のページ情報のinputを修正します。

修正前

<input type="hidden" name="step" value="confirm" />
<button type="submit" class="..." name="ACMS_POST_Member_Signup_Confirm">内容を確認する</button>

修正後

<input type="hidden" name="step" value="2" />
<button type="submit" class="..." name="ACMS_POST_Form_Chain">次へ</button>

最後に、2ページ目の入力フォームを用意します。デフォルトで2ページ目は用意されています。

_member/signup/input2.html

このテンプレートを見ると「_member/parts/field-input.html」がインクルードされているので「_member/parts/field-input.html」に追加するカスタムフィールドを追加ください。

また、カスタムフィールドを追加した場合、確認画面に追加したカスタムフィールドを表示させるため、「_member/parts/field-confirm.html」も修正ください。

以上で、会員登録フォームの入力を複数ページに分けることが完了しました。

URLを変更する

デフォルトで会員機能の各ページのURLは決まっていますが、変更することもできます。変更は「config.server.php」で行います



定数 説明 デフォルト値
LOGIN_SEGMENT 管理ログインページのパス login
ADMIN_RESET_PASSWORD_SEGMENT 管理ユーザー用パスワード再設定ページのパス admin-reset-password
ADMIN_RESET_PASSWORD_AUTH_SEGMENT 管理ユーザー用パスワード再設定の認証ページのパス admin-reset-password-auth
ADMIN_TFA_RECOVERY_SEGMENT 管理ユーザー用2段階認証解除ページのパス admin-tfa-recovery
SIGNIN_SEGMENT 一般サインインページのパス signin
SIGNUP_SEGMENT 会員登録ページのパス signup
RESET_PASSWORD_SEGMENT 一般ユーザー用パスワード再設定ページのパス reset-password
RESET_PASSWORD_AUTH_SEGMENT 一般ユーザー用パスワード再設定の認証ページのパス reset-password-auth
TFA_RECOVERY_SEGMENT 一般ユーザー用2段階認証解除ページのパス tfa-recovery
PROFILE_UPDATE_SEGMENT 自身のプロフィール変更ページのパス mypage/update-profile
PASSWORD_UPDATE_SEGMENT 自身のパスワード変更ページのパス mypage/update-password
EMAIL_UPDATE_SEGMENT 自身のメールアドレス変更ページのパス mypage/update-email
TFA_UPDATE_SEGMENT 自身の2段階認証設定ページのパス mypage/update-tfa
WITHDRAWAL_SEGMENT 自身の退会ページのパス mypage/withdrawal

退会機能

Ver. 3.1 で新しく退会機能が追加されました。退会機能について紹介いたします。

退会機能は、会員登録したユーザーが自身で退会を行うための機能になります。 退会された場合、即ユーザー情報を削除する「物理削除」と、削除フラグを立てるだけの「論理削除」があります。

物理削除

退会時に即時ユーザーのデータを削除します。

論理削除

退会時に削除フラグがつきサインインできなくなりますが、データ自体は残っています。またメールアドレスの後ろに退会日をつけたアドレスに変更するので、退会ユーザーは同じアドレスで再度会員登録でき、一般ユーザーからはデータが消えているように見えます。

退会後のメールアドレス例

info@example.com_withdrawal_20230910-133933

設定方法

管理ページ > コンフィグ > ログイン設定の「退会機能」で設定を行います。



設定項目 説明 デフォルト値
削除タイプ 論理削除または物理削除を設定します 論理削除
データ保存期間 論理削除の場合、データが削除されるまでの期間を設定します 90日後

退会機能設定

退会機能設定


論理削除時に退会理由を聞く

退会する時、退会理由を聞くことは多くあると思います。 今回の退会機能では、論理削除の場合にはなりますが、退会理由をユーザーのカスタムフィールドとして保存できるようになっております。

テンプレートの編集

退会ページのテンプレートである「_member/withdrawal.html」を開き、ここにカスタムフィールドで退会理由の入力欄を用意します。通常のユーザーカスタムフィールドなので、複数設置しても大丈夫です。デフォルトで、退会理由のカスタムフィールド例がコメントアウトされていますので、参考にください。

<table class="acms-member-inputs">
  <thead>
    <tr>
      <th>退会理由</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="acms-list-nostyle">
          <li>
            <div class="acms-form-checkbox acms-margin-bottom-mini">
              <input type="checkbox" name="reason_for_withdrawal[]" value="reason1"{reason_for_withdrawal:checked#reason1} id="input-checkbox-reason_for_withdrawal-reason1" />
              <label for="input-checkbox-reason_for_withdrawal-reason1">
                <i class="acms-ico-checkbox"></i>
                使用頻度が低い
              </label>
            </div>
          </li>
          <li>
            <div class="acms-form-checkbox acms-margin-bottom-mini">
              <input type="checkbox" name="reason_for_withdrawal[]" value="reason2"{reason_for_withdrawal:checked#reason2} id="input-checkbox-reason_for_withdrawal-reason2" />
              <label for="input-checkbox-reason_for_withdrawal-reason2">
                <i class="acms-ico-checkbox"></i>
                使いたい機能が少ない
              </label>
            </div>
          </li>
          <li>
            <div class="acms-form-checkbox acms-margin-bottom-mini">
              <input type="checkbox" name="reason_for_withdrawal[]" value="reason3"{reason_for_withdrawal:checked#reason3} id="input-checkbox-reason_for_withdrawal-reason3" />
              <label for="input-checkbox-reason_for_withdrawal-reason3">
                <i class="acms-ico-checkbox"></i>
                品質に不満がある
              </label>
            </div>
          </li>
          <li>
            <div class="acms-form-checkbox">
              <input type="checkbox" name="reason_for_withdrawal[]" value="reason4"{reason_for_withdrawal:checked#reason4} id="input-checkbox-reason_for_withdrawal-reason4" />
              <label for="input-checkbox-reason_for_withdrawal-reason4">
                <i class="acms-ico-checkbox"></i>
                会員向けの特典・サービスが少ない
              </label>
            </div>
          </li>
        </ul>
        <input type="hidden" name="field[]" value="reason_for_withdrawal" />
      </td>
    </tr>
    <tr>
      <th><label for="textarea-reason_for_withdrawal_text">ご意見・ご要望</label></th>
      <td>
        <textarea
          name="reason_for_withdrawal_text"
          class="acms-form-width-full"
          id="textarea-reason_for_withdrawal_text"
          placeholder="その他、ご意見・ご要望などがありましたら自由にご記入ください"
          rows="5"
        >{reason_for_withdrawal_text}</textarea>
        <input type="hidden" name="field[]" value="reason_for_withdrawal_text" />
      </td>
    </tr>
  </tbody>
</table>

退会機能の紹介は以上となります。データ保存のポリシーにしたがって、物理削除、論理削除やデータ保存期間を設定して運用いただければと思います。

CMS-6478 カテゴリーにシークレットステータスを追加

「シークレットブログ」と同様に、カテゴリーに「シークレット」ステータスを設定できるようになりました。


カテゴリー編集画面

カテゴリー編集画面


これにより、例えば会員限定ページを作る時、子ブログを作らなくてもカテゴリーで対応できるようになりました。

ログインしていない時のログイン画面

シークレットカテゴリやシークレットブログにログインしていない時、ログイン画面が表示されるようになりますが、 今回ログイン画面が分離されたため「管理ログイン」と「一般サインイン」のどちらを表示させるかを設定しないといけません。

設定は、管理ページ > コンフィグ > ログイン設定の「ログインページの指定」で行います。


ログインページの指定

ログインペログインページの指定ージの指定


一般的には、会員サイトであればデフォルト値である「一般サイン画面」を設定することになると思います。

CMS-6473 管理画面に読者一覧ページを作成 & 読者CSVダウンロード機能を追加

会員機能の1つとして、管理画面で会員ユーザーのみ表示する一覧画面が用意されました。今までのユーザー管理でも確認は出来るのですが、ユーザー管理では全ての権限が混ざった状態で表示されますので、分かりやすくなったと思います。

また会員のCSVダウンロード機能も標準で用意されたので、ここでダウンロードしたCSVをメルマガ配信サービスなどにインポートしてメルマガを送信するなどの利用方法がやりやすくなったと思います。ぜひご利用ください。


会員一覧画面

会員一覧画面


ダウンロードするCSVの項目を制御する

CSVの項目をカスタマイズすることができます。

カスタマイズ方法

自身のテーマに「themes/system/admin/user/_csv.html」をコピーしてきます。

このファイルを編集して、基本設定は「csv_column_user」に追加して、カスタムフィールドは「csv_column_field」に追加します。

<!-- ユーザーの基本データ -->
<input type="hidden" name="csv_column_user[]" value="id">
<input type="hidden" name="csv_column_user[]" value="code">
<input type="hidden" name="csv_column_user[]" value="status">
<!-- <input type="hidden" name="csv_column_user[]" value="sort"> -->
<input type="hidden" name="csv_column_user[]" value="name">
<input type="hidden" name="csv_column_user[]" value="mail">
<input type="hidden" name="csv_column_user[]" value="mail_magazine">
<!-- <input type="hidden" name="csv_column_user[]" value="auth"> -->
<!-- <input type="hidden" name="csv_column_user[]" value="indexing"> -->
<!-- <input type="hidden" name="csv_column_user[]" value="login_anywhere"> -->
<!-- <input type="hidden" name="csv_column_user[]" value="global_auth"> -->
<input type="hidden" name="csv_column_user[]" value="login_expire">
<input type="hidden" name="csv_column_user[]" value="login_datetime">
<input type="hidden" name="csv_column_user[]" value="updated_datetime">
<input type="hidden" name="csv_column_user[]" value="generated_datetime">
<input type="hidden" name="csv[]" value="csv_column_user">


<!-- ユーザーのカスタムフィールド -->
<!-- <input type="hidden" name="csv_column_field[]" value="hoge"> -->
<!-- <input type="hidden" name="csv_column_field[]" value="hoge2"> -->
<input type="hidden" name="csv[]" value="csv_column_field">

例)メールアドレスとメルマガ配信許可とカスタムフィールドの年齢(age)だけのCSV

<!-- ユーザーの基本データ -->
<input type="hidden" name="csv_column_user[]" value="mail">
<input type="hidden" name="csv_column_user[]" value="mail_magazine">
<input type="hidden" name="csv[]" value="csv_column_user">

<!-- ユーザーのカスタムフィールド -->
<!-- <input type="hidden" name="csv_column_field[]" value="age"> -->
<input type="hidden" name="csv[]" value="csv_column_field">

CMS-6468 読者ログイン時の場合、ページキャッシュを有効にする設定(subscriber_cache)を管理画面でも設定できるように修正

会員サイトでのキャッシュについて重要な項目について解説をします。

通常CMSにログイン中は、CMSのキャッシュはオフになります。ただし以下設定を行うと「読者権限」の場合のみ、ログインしていてもCMSキャッシュを有効にすることができます。これは一般ユーザーが会員サイトにログインし閲覧する時キャッシュがないとパフォーマンスに影響が出るためになります。

設定方法

管理ページ > コンフィグ > キャッシュ設定の「読者ユーザーの場合」のチェックをつけることにより、読者ユーザーがログインしていてもCMSキャッシュが有効になります。


キャッシュ設定画面

キャッシュ設定画面


注意ポイント

ただし、この設定を有効にすると、ページキャッシュが有効になり、会員情報など会員毎の情報やログインボタン、ログアウトボタンの切り替えなどログイン状態によって切り替わるような処理もキャッシュされてしまいます。この機能を有効にする場合は、会員毎の情報やログイン状態による要素の切り替えなどは全てJavaScriptでキャッシュが効かないように実装する必要があります。 少しハードルの高い実装になりますので、難しい方は設定しないようにお願いします。

CMS-6472 ログイン状態によって表示・非表示をする組み込みJSを追加「js-login-hidden, js-login-show, js-logout-hidden, js-logout-show」

会員ログイン中でもページキャッシュを有効にしている場合、ログインボタンとログアウトボタンの切り替えなど、ログイン状態によって切り替えたい要素があります。ただしTouch_Loginなどで、実装してしまうとキャッシュされてしまうので、JavaScriptでキャッシュされないように判定してあげる必要があります。

そこで、今回新しくログイン状態によって表示・非表示をする組み込みJSを追加しました。

使い方は簡単で、表示・非表示したい要素に以下クラスを追加するだけです。



クラス名 説明
js-login-hidden ログイン状態の時、非表示にする
js-login-show ログイン状態の時、表示する
js-logout-hidden ログアウト状態の時、非表示にする
js-logout-show ログアウト状態の時、表示する

会員機能の紹介については以上になります。他 Ver. 3.1.0 の新機能・改善も多くありますので、ぜひご覧ください。

日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。
今後とも a-blog cms のことをどうぞよろしくお願いいたします。

テンプレート機能の改善 - Ver. 3.1.0 リリース情報


この記事では、2023年09月14日にリリースされた「Ver. 3.1.0」の「テンプレート機能」の新機能・改善点について紹介しています。

新機能・改善点一覧

  • CMS-6462 インクルード文で使えるグローバル変数を追加できるHook(addGlobalVarsInIncludePath)を追加
  • CMS-6471 インクルード文に使用できるグローバル変数に「%{CATEGORY_LEVEL}」を追加

CMS-6462 インクルード文で使えるグローバル変数を追加できるHook(addGlobalVarsInIncludePath)を追加

「Ver. 3.0」よりテンプレートキャッシュ機能が追加され、テンプレートキャッシュが利用できるようになりました。 ただテンプレートキャッシュ有効時(デフォルト有効)の制限として、インクルード文内で利用できる「グローバル変数」に制限がありました。

テンプレートキャッシュのマニュアル

インクルード文にグローバル変数を含める例

@include("/admin/entry/bcd/%{BCD}.html")

このインクルード文で使用できるグローバル変数は固定になっており、他のグローバル変数や、カスタムグローバル変数をインクルードで利用できず、不便な場合が多々ありました。 そこで、Ver. 3.1 では、インクルード文で利用できるグローバル変数を追加できる仕組みを用意しました。(カスタムグローバル変数もOKです)

インクルード文で使えるグローバル変数の追加方法

「Hook.php」を修正することにより、インクルード文で使えるグローバル変数を追加します。

extension/acms/Hook.php の「addGlobalVarsInIncludePath」メソッド

public function addGlobalVarsInIncludePath(&$globalVarNames)
{
    $globalVarNames = ['SESSION_USER_AUTH', 'HOGE']; // 例)インクルード文に %{SESSION_USER_AUTH} と %{HOGE} を使えるようにする
}

上記の例のように、配列の形でグローバル変数名を指定します。すでにあるグローバル変数は、Hook.php で追加したカスタムグローバル変数でも大丈夫です。

注意事項

上記の方法で、インクルード文に使用できるグローバル変数を追加することができますが、注意する点があります。 グローバル変数の値ごとにテンプレートキャッシュを生成するので、ページ毎に値が違うような値の種類が多いグローバル変数を設定してしまうと、大量のテンプレートキャッシュが生成されることになり、キャッシュの意味がなくなってしまう可能性があります。ここで追加するグローバル変数は、とりうる値の数が少ないグローバル変数にしてください。

CMS-6471 インクルード文に使用できるグローバル変数に「%{CATEGORY_LEVEL}」を追加

「Ver. 3.1」でインクルード文に使用できるグローバル変数を拡張できるようになりましたが、「%{CATEGORY_LEVEL}」はデフォルトで使用できるようにいたしました。

デフォルトで使用できるグローバル変数

%{ECD}
%{BCD}
%{PBCD}
%{RBCD}
%{CCD}
%{PCCD}
%{RCCD}
%{ALIAS_CODE}
%{IS_ADMIN}
%{MODULE_NAME}
%{MODULE_ID}
%{ADMIN_PATH}
%{ADMIN_PATH_MID}
%{CATEGORY_LEVEL} // Ver. 3.1 で追加

テンプレート機能の紹介については以上になります。他 Ver. 3.1.0 の新機能・改善も多くありますので、ぜひご覧ください。

日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。
今後とも a-blog cms のことをどうぞよろしくお願いいたします。

キャッシュ機能の改善 & Webhook機能の改善 - Ver. 3.1.0 リリース情報


この記事では、2023年09月14日にリリースされた「Ver. 3.1.0」の「キャッシュ機能」「Webhook機能」の改善点について紹介しています。

新機能・改善点一覧

  • CMS-6480 キャッシュドライバーにデータベースを追加しデフォルトドライバーをデータベースに変更
  • CMS-6448 webhook に「ユーザー」タイプを追加

CMS-6480 キャッシュドライバーにデータベースを追加しデフォルトドライバーをデータベースに変更

「Ver. 3.0.0」で、キャッシュ機能が大幅にアップデートされ、複数のキャッシュドライバーから、環境に合わせて好きなキャッシュ方法を選択できるようになりました。

Ver. 3.0 にあったキャッシュドライバー

  • file: ファイル キャッシュドライバー
  • php: PHPファイル キャッシュドライバー
  • memory: メモリー キャッシュドライバー
  • apcu: APCuキャッシュドライバー
  • redis: Redis キャッシュドライバー

「Ver. 3.1.0」では、上記のドライバーに加え、「データベース」キャッシュドライバーを追加いたしました。このドライバーを選択すると、キャッシュをデータベースに保存するようになります。

追加意図

レンタルサーバー環境だと「APCu」や「Redis」のキャッシュドライバーが利用できない事が多く、デフォルトでもある「file」キャッシュドライバーを利用されている方も多いと思います。 ただディスクアクセスが遅い環境だと、キャッシュのパフォーマンスがあまり出ないため、今回メモリ上に乗るためアクセス速度が基本的には速い「データベース」を追加いたしました。

またもう1つの理由として、データベースキャッシュを利用することにより、複数台構成のときに、同じキャッシュを利用できる為になります。いままでは複数台構成でキャッシュを統一するには「Redis」を利用するしかなかったのですが、少し導入ハードルが高く設定しずらい状況でした。

各キャッシュのデフォルト値

今回「Ver. 3.1」で各キャッシュのキャッシュドライバーのデフォルト値を変更しています。基本的にはこのままで問題ありませんが、よりキャッシュのパフォーマンスをあげたい場合は、「Redis」や「APCu」をご検討ください。

変更前の Ver. 3.0 の設定値

テンプレートキャッシュ: file
フィールドキャッシュ: file
モジュールキャッシュ: file
一時キャッシュ: memory
コンフィグキャッシュ: file
ページキャッシュ: file

変更後の Ver. 3.1 の設定値

テンプレートキャッシュ: file
フィールドキャッシュ: database
モジュールキャッシュ: database
一時キャッシュ: memory
コンフィグキャッシュ: database
ページキャッシュ: database

キャッシュドライバーのマニュアルを見る

CMS-6448 webhook に「ユーザー」タイプを追加

今回、Webhookのタイプに「ユーザー」タイプを追加しました。これにより、会員サイトなどで新規会員登録された時や更新、退会時にフックをすることが出来るようになりました。


イベントの種類



イベント 説明
ユーザー作成 管理画面でユーザーを作成した時、発火します。
会員登録 管理画面で管理者がユーザー追加した時ではなく、会員登録機能で表から会員登録した場合に発火します。
ユーザー更新 ユーザー情報更新時に発火します。管理画面、会員機能による更新は関係ありません。
ユーザー削除 管理画面でユーザーを削除した時、発火します。
ユーザー退会 会員機能で、ユーザーが退会処理をした時、発火します。
ユーザーログイン 権限関係なく、ログイン・サインインしたとき、発火します。

ログとしてチャットツールに通知したり、外部のサービス(例えばCRMなど)とデータ連携したり、いろいろ出来る幅が広がると思います。ぜひご活用ください。

Webhookのマニュアルを見る

「キャッシュ機能」「Webhook機能」の改善紹介については以上になります。他 Ver. 3.1.0 の新機能・改善も多くありますので、ぜひご覧ください。

日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。
今後とも a-blog cms のことをどうぞよろしくお願いいたします。