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」の「会員機能」の新機能・改善点について紹介しています。

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

新機能・改善点一覧

  • 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 のことをどうぞよろしくお願いいたします。

memberテーマを追加 - Ver. 3.1.0 リリース情報


この記事では、2023年09月14日にリリースされた「Ver. 3.1.0」で追加された「member」テーマついて紹介しています。

Ver. 3.1 で会員機能が大幅にアップデートされましたので、会員機能を使った新しいテーマ「member」を新たに追加いたしました。

新機能・改善点一覧

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

CMS-6461 会員機能が入った、memberテーマを追加

「member」テーマは、メディアサイトベースの作りになっており、会員機能を持ち、会員限定の記事を用意できるテーマとなっております。 基本的にコンテンツは記事のみになりますので、作りはそこまで難しくなく、会員サイトを作りたい場合のベースとして便利なテーマになっております。


memberテーマ

memberテーマ


また「member」テーマは、継承はしていませんが「UTSUWA」テーマベースで開発されていてパーツなどは「UTSUWA」と同じになっております。

memberテーマの主な機能

  • メディアサイト
  • カテゴリーによる記事の分類
  • 会員登録機能
  • マイページ(シークレットカテゴリー)
  • 会員情報の変更機能(プロフィール、メールアドレス、パスワードなど)
  • 会員限定記事機能
  • SNS認証によるサインイン・会員登録
  • お問い合わせフォーム

サインイン画面

サインイン画面


会員登録画面

会員登録画面


マイページ

マイページ


プロフィール変更画面

プロフィール変更画面


会員限定記事

会員限定記事


CMS-6477 ログイン中だけエントリーの続きを閲覧できる会員限定記事機能を追加

会員限定記事のカスタマイズ方法について紹介いたします。

エントリー編集画面に会員限定設定を表示させる

管理ページ > 編集画面 > 編集設定の「会員限定」の表示にチェックをつけます。これによりエントリーを会員限定記事に設定することができるようになります。


編集設定画面

編集設定画面


エントリーを会員限定にする

次に会員限定にしたい記事を編集します。エントリーの編集画面に移動すると「 会員限定記事にする」チェックボックスがあるので、チェックをつけます。


エントリーの編集画面

エントリーの編集画面


チェックをつけると、普段は「続きを読む」の位置を設定するバーが「以下ユニットが会員限定になります」と表示が変わります。このバー以下が会員限定のコンテンツになるので、好きな位置にバーを動かしましょう。


会員限定内容の設定

会員限定内容の設定


会員限定部分の表示テンプレートを用意

以上の設定ができると、エントリー詳細で会員限定コンテンツ部分が表示されなくなります。 このままだと会員限定コンテンツが表示されないので、会員限定コンテンツ部分のテンプレートを用意する必要があります。

ログインしている場合は、続きのユニットをJSで読み込み、ログアウトしている場合はサインインを促すテンプレートを用意します。

memberテーマの「include/parts/members-only.html」か、systemテーマの「include/members-only.html」を参考にください。

<!-- BEGIN continueLink -->
<div class="js-members-only-entry" data-eid="%{EID}" data-page="%{PAGE}" data-display="block" style="display: none;" >
  <div class="read-more entry-container">
    <div class="acms-alert acms-margin-top-small acms-margin-bottom-large">
      <p class="acms-margin-none acms-margin-top-large acms-margin-bottom-large acms-text-center">以降は会員限定コンテンツです。<br>続きを読むためには会員登録が必要になります。</p>
      <div class="acms-text-center">
        <p class="acms-margin-none acms-margin-bottom-medium">
          <a href="%{HOME_URL}%{SIGNUP_SEGMENT}/" class="acms-btn acms-btn-primary acms-btn-large">今すぐ無料で登録</a>
        </p>
        <form action="" method="post" class="acms-margin-bottom-large">
          <input type="hidden" name="bid" value="%{BID}" />
          <input type="hidden" name="eid" value="%{EID}" />
          <button type="submit" name="ACMS_POST_Member_SigninRedirect" class="acms-btn acms-btn-large">サインインして続きを読む</button>
        </form>
      </div>
    </div>
  </div>
</div>
<!-- END continueLink -->

このテンプレートをエントリー詳細のEntry_Bodyで読み込みます。 読み込む位置は、ユニット表示に下になります。

<!-- ユニット -->
<!-- BEGIN unit:veil -->
@include("/include/unit.html")
<hr class="clearHidden" />
<!-- END unit:veil -->

<!-- 会員限定 -->
@include("/include/members-only.html")

これで、会員限定設定の基本は完了になります。ログインしている時は全てのユニットが見え、ログアウトしている時は、サインインを促す表示がされると思います。


会員限定コンテンツを知らせるテンプレート

会員限定コンテンツを知らせるテンプレート


エントリー一覧や詳細に会員限定ラベルを表示

Entry_Summary系モジュールやEntry_Bodyモジュールに会員限定記事の場合に表示するブロックが新しく追加されました。これを利用して会員限定記事にはラベルをつけると分かりやすくなります。

<!-- BEGEIN entry:loop -->
...
<!-- BEGIN membersOnly --><span class="...">会員限定</span><!-- END membersOnly -->
...
<!-- END entry:loop -->

Entry_Summaryの変数表

Entry_Summaryの変数表


一覧での会員限定ラベル

一覧での会員限定ラベル


詳細での会員限定ラベル

詳細での会員限定ラベル


会員限定記事の一覧作成

必須の設定ではありませんが、サイトに会員限定記事の一覧を出したい場合もあると思います。ここでは会員限定記事のみの一覧の出し方を解説します。

といってもEntry_SummaryEntry_Bodyモジュールの設定を1つ変更するだけです。

Entry_SummaryやEntry_BodyのモジュールIDの「表示設定」で、「会員限定のエントリーのみ表示する」にチェックをつけてください。 あとは、通常のモジュールの使い方で会員限定記事のみ表示することができるようになります。


会員限定の記事のみ表示する

会員限定の記事のみ表示する


以上、会員限定記事機能の紹介でした。

memberテーマの紹介については以上になります。他 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で操作された内容や、CMSで発生したエラーがログとして残り管理画面から確認できるようになりました。 操作した人や、URL、HTTPヘッダーや、送信内容などログ毎に細かく情報が取れますので、何か問題が起きた時の調査に役立ちます。

* 操作ログはプロフェッショナルライセンス以上になりますが、何かしらエラーが起きた場合のログは、スタンダード版でも確認できるようになっております。

ログ確認画面

管理者でルートブログの管理ページにアクセスすると、右側メニューに「監査ログ」があります。クリックすると監査ログページにアクセスできます。

監査ログ画面では、ログの一覧が確認でき、ユーザーや期間、ログレベルで絞り込みが行えるようになっています。


監査ログ画面

監査ログ画面


詳細な情報を確認したい場合は、確認したいログの「詳細」ボタンを押すことで確認できます。 この画面では様々な情報が確認でき、右上の「クリップボードにコピー」ボタンを押すことで「JSONデータ」としてコピーすることができます。サポートを受ける際にも非常に有効な手段ですので、ぜひご利用ください。


ログの詳細情報

ログの詳細情報


ログレベル

ログのレベルは全部で以下のものがあります。「INFO(情報)」については、プロフェッショナルライセンス以上でのみ記録されるようになります。ユーザーの操作履歴を残したい場合は、プロフェッショナルライセンス以上をご検討ください。



ログレベル 説明 スタンダード プロ以上
DEBUG(デバッグ) デバッグ情報
INFO(情報) エラーではない正常の操作を記憶します
NOTICE(注意) 特にプログラムを修正する必要はないが、不正操作・不正アクセス(CSRFチェック、アカウントロック時)など
WARNING(警告) 潜在的な問題。不具合や環境に問題がある可能性があるエラーなど
ERROR(エラー) データが壊れているなど、不具合や環境に問題がある可能性があるエラー。処理が継続できない場合など
CRITICAL(重大) 一部機能が使用不能・表示不能になったなどの、ある程度影響範囲が大きいエラーが起きた場合など
ALERT(警報) データベースに接続できないなど、サイトが表示できない状態で緊急で対応が必要な場合など
EMERGENCY(緊急) サイトが表示できない状態。基本的には使用していません。

通知機能とファイルへの保存

エラーが発生した際、問題にすぐに気がつけるように監査ログ機能には通知機能がついており、設定したログレベル以上のログが発生すると、メールで通知してくれます。 また、データベースにログは保存しているのですが、ファイルにも書き出すことが出来るようになっております。

設定方法

a-blog cms設置ディレクトリにある「.envファイル」で設定を行います。

# エラー通知
ALERT_EMAIL_FROM=info@example.com # エラー通知メールの送信元
ALERT_EMAIL_TO= # エラー通知メールの送信先。空の場合「UID」が一番小さい管理者アカウントのメールアドレスに送信します。
ALERT_EMAIL_BCC= # カンマ区切りで指定
ALERT_REPORTING_LEVEL=WARNING # エラー通知をする最低ログレベルを設定します。(DEBUG|INFO|NOTICE|WARNING|ERROR|CRITICAL|ALERT)

# ロガー
LOGGER_ROTATING_MAX_FILES=60 # ログローテーションの日数を設定します。
LOGGER_MODE=development # (development|production) productionに設定すると、ライセンス切れやデバッグモード時なども、ログとして残します


設定項目 説明 デフォルト値
ALERT_EMAIL_FROM エラー通知メールの送信元 info@example.com
ALERT_EMAIL_TO エラー通知メールの送信先。空の場合「UID」が一番小さい管理者アカウントのメールアドレスに送信します
ALERT_EMAIL_BCC エラー通知メールのBCC
ALERT_REPORTING_LEVEL エラー通知をする最低ログレベルを設定します WARNING
LOGGER_ROTATING_MAX_FILES ログローテーションの日数を設定します 60
LOGGER_MODE productionに設定すると、ライセンス切れやデバッグモード時なども、ログとして残します development

LOGGER_MODEはデフォルトだと「development」になっています。この状態だと、ライセンスに問題があった場合などログが残らず通知もしてくれないので、本番環境では必ず「production」に設定しましょう。

開発者向け

専用モジュールやHookなどを使用して、PHPをカスタマイズしている方もいると思います。 そんな方には、以下の方法を使うことで自分のプログラムにログを追加できるようになります。

基本的な使い方

  • 保存したいログレベルのメソッドを呼び出す
  • 第1引数: メッセージ文字列
  • 第2引数: 保存したい情報(連想配列)
AcmsLogger::[ログレベル](string $message, array $info);

// 例
AcmsLogger::info('xxxを作成しました', [
  'hoge' => 'abc',
  'hoge2' => 200,
]);

use して使う場合

use Acms\Services\Facades\Logger;

Logger::info('xxxx');

コード例

メッセージだけ指定

\ AcmsLogger::critical('重大な問題により動作を停止しました');

例外をログとして残す

「Common::exceptionArray()」を第2引数に指定すると、例外の詳細な情報を渡してくれます。

try {
...
} catch ( \Exception $e ) {
    \AcmsLogger::warning($e->getMessage(), \Common::exceptionArray($e));
}

このログは通常のログと同じように表示や通知などに利用できますので、PHPでカスタマイズを行っている方はぜひお試しください。

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

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