a-blog cms Ver. 2.9.0 リリース!
いつもお世話になっております。開発の伊藤です。
Ver. 2.9.0 が 2018/10/09 にリリースされました!そこで、新しく追加された機能や変更点などを紹介したいと思います。
最後に変更点一覧を載せてあります。
Ver. 2.8 からのバージョンアップ
機能紹介の前にVer. 2.8からのアップデート方法を紹介しておきます。
Ver. 2.7以下からのバージョンアップはこれまで通り、パッケージをダウンロードして手動でバージョンアップが必要ですが、Ver. 2.8 より管理画面からのアップデート機能が追加されました。
ただデフォルトですと、「パッチバージョン」のみのアップデートになっていますので、Ver. 2.9 にアップデートするためには設定を変更する必要があります。
「管理ページ > コンフィグ > 機能設定」 に移動し、「オンラインアップデート」を「マイナーバージョンも含める」に変更してください。これで管理画面からVer. 2.9 に更新できるようになります。
MySQL 8.0に対応
MySQL 8.0 に対応しました。MySQL 8.0 は 5系からのメジャーバージョンアップで、パフォーマンスもよくなっていますので、是非お使いください。
OpenStreetMapに対応
Ver. 2.8 までは地図を表示する場合、Google Maps か Yahoo!地図に限られていたのですが、両方とも API Key が必要になります。また Google Mapsについては制限が厳しくなり クレジットカード を登録しないと表示できない場合も出てきました。
そこで、Ver. 2.9 ではオープンソースの OpenStreetMapを標準で使えるように改善しました。ユニットはもちろんカスタムフィールドなど、今まで地図を表示していた機能全てでご利用いただけます。
PC, スマホ, タブレットのプレビュー機能を追加
ログインしたまま、表示側の確認ができる「プレビュー機能」が追加されました。 プレビューは、スマホやタブレットなどの画面サイズを簡単に切り替えることができ、また User Agent のシミュレートも行いますので、「ルール」による設定も反映されるので確認に便利です。
Webに慣れている方は開発者ツールなどでも確認できますが、あまりWebに詳しくない方でも簡単に各デバイスの見え方を確認することができるようになります。
アクションボックスにあるプレビューボタンを押すことで、どのページでもプレビュー出来ることができます。管理ページ側のエントリーの編集ページでもプレビューボタンがあるので、表側ページに移動しなくてもすぐ確認することができます。
プレビューの共有機能を追加(プロフェッショナルライセンス以上)
プロフェッショナル以上のライセンスでは、プレビュー機能を適用したページの状態を共有リンクを取得できるようになります。共有リンクを取得すれば、 まだ公開されていないページ(例:非公開のページなど)をログインしていない人でも閲覧できるようになります。
プレビューページで共有ボタンを押して、「共有URL」を取得することで、共有できるようになります。共有URLはランダムな文字列がついており簡単にわからないようになっています。取得した共有リンクには共有期限があり、「管理ページ > コンフィグ > 機能設定 の プレビュー共有の有効期限」より共有期限を設定することが可能です。
この機能より、公開前の記事やページを承認機能を使わずに手軽に好きな連絡手段で関係者に確認することができるようになります。
静的書き出しでエントリーの差分書き出しに対応(プロ版以上)
Ver. 2.8 よりブログ毎の静的書き出し機能はあったのですが、今回のバージョンでは、エントリーの更新日時をみての差分書き出しに対応しました。いくつか制限はありますが日々の運用ではエントリーの更新が多いという方には喜ばれると思います。
また、フル書き出しとは別のディレクトリに書き出すこともできますので、差分書き出しを行い、手動で公開領域にアップロードといった運用もできるようになると思います。
いくつかの注意点
- 指定した日時からのエントリー差分データを書き出します
- 変更されたエントリーが所属するトップ、カテゴリーなどの一覧ページも一緒に書き出されます
- 画像などのファイル書き出しは、差分のエントリーのものだけになります
ブログ、カテゴリー、ユーザーに位置情報を追加
Ver. 2.7 でエントリーの位置情報に対応しました。Ver. 2.9ではエントリーに追加して以下3つのタイプにも対応しました。
- ブログ
- ユーザー
- カテゴリー
これにより、サイトの設計がしやすくなったと思います。例えば、複数店舗をもつサイトで1店舗を1ブログと設計して、近くの店舗を出すといったことが出来るようになりました。
機能の有効化
管理ページ > コンフィグ > 機能設定の「位置情報」から機能を有効にできます。エントリーについても 管理ページ > コンフィグ > 機能設定からこの場所に移動してますのでご注意ください。
モジュール
以下のモジュールで位置情報を扱うことができるようになります。
位置情報の表示
- Blog_Field
- User_Field
- Category_Field
- Entry_Field
- Entry_Body
- Entry_Summary
位置情報でソート
- Blog_GeoList
- User_GeoList
- Category_GeoList
- Entry_GeoList
srcset属性のパス補完に対応
a-blog cms ではテーマがドキュメンルートのように扱えるようにパスの書き換えを行なっています。
例: themes/example/images/以下に画像がある場合
<img src="/images/sample.png">
ただ srcset の書き換えには対応していませんでしたので、グローバル変数などを使ってカスタマイズしないといけませんでした。
例: themes/example/images/以下に画像がある場合
<img src="/images/sample.png"
srcset="%{CURRENT_THEMES_DIR}images/sample.png 320w,
%{CURRENT_THEMES_DIR}images/sample@2x.png 640w"
sizes="50vw"
>
これを、Ver. 2.9 では srcset の書き換えにも対応し以下のように記述できるようになりました。
<img src="/images/sample.png"
srcset="/images/sample.png 320w,
/images/sample@2x.png 640w"
sizes="50vw"
>
これでより、静的HTMLを書くようにコーディングが出来るようになったと思います!
ユーザー切り替え機能の追加
ユーザーの切り替え機能を追加しました。この機能を使うと、自分以外のユーザーにログインしたまま瞬時に切り替える事が出来るようになります。
ユーザーの切り替えは、管理ページのユーザー一覧からユーザーを選択して切り替えます。
切り替えが出来る条件(デフォルト設定の場合)
- ルートブログの管理者権限ユーザーであること
- 切り替えユーザーは管理者でないこと
設定
設定は「private/config.system.yaml」で行います。
項目 | 設定値 | デフォルト値 | 説明 |
---|---|---|---|
switch_user_enable | on / off | on | ユーザー切り替え機能を有効化 |
switch_user_permission | root / all | root | ユーザー切り替えができる管理者設定(root=ルートブログの管理者のみ, all=全ての管理者) |
switch_user_same_level | on / off | off | 管理者ユーザーへの切り替えができるかの設定 |
フォームのテンプレート内容を管理画面から編集できる機能を追加
フォームで送られるメールの内容は、運用中よく変更される場所だと思います。
ただし、いままではフォームで送信されるメールテンプレートはテンプレートとして用意しないといけませんでした。これをVer. 2.9.0 では、管理ページより内容を編集できるようになったので運用が楽になると思います。
編集画面は、管理ページ > フォーム の該当のフォームの編集画面になります。「自動返信」だけではなく「管理者宛」メールも編集できるようになっています。
テンプレートと編集画面での入力が両方指定されている場合は、編集画面で入力した内容が優先されて利用されます。
extend@beginnerテーマの追加
新しいテーマとして、「extend@beginner」テーマを追加しました。「beginner」テーマは初心者用に最低限の機能で作られているテーマになります。「beginner」テーマはわかりやすい「@include」の機能でテンプレートが分割されているのに対し、今回追加された「extend@beginner」テーマはVer. 2.8 で追加された、「@extends機能」でテンプレートを分割するようになっています。
2つのテーマを見比べると、「@extends機能」を使ったテーマの管理のしやすさがわかると思います。初心者の方の次のステップアップテーマとしてご利用ください。
関連記事を複数もてる機能を追加
Ver. 2.6.0 より エントリーとエントリーを関連させる「関連記事機能」がありましたが1つのフィールドしか設定できませんでした。
例えば、
- 関連する記事
- おすすめ記事
- 一緒によく見られている記事
など関連といっても、いくつかあり1つのフィールドでは足りない場合があります。そこでVer. 2.9では関連機能をパワーアップさせて、複数の関連記事を1つのエントリーに持たせれるようにしました。
設定方法
管理ページ > コンフィグ > 編集設定 の「関連記事グループ」で設定できます。
タイプ・ラベル・モジュールIDを設定できるようになっており、以下のような意味があります。
タイプ | 内部で利用する識別子になります。英数字で設定を行います。 |
---|---|
ラベル | 編集画面に出力されるラベルです。 |
モジュールID | 関連記事を設定する時に候補を表示する「Admin_Entry_Autocomplete」モジュールのモジュールID名を設定します。 ここで設定した名前でモジュールIDを作る事で、設定できる記事を絞り込むことができます。 |
画像ユニットでexif情報をキャプションに追加できる機能を追加
画像ユニットで選択された画像の「exif情報」を読み、写真の情報を自動でキャプションに設定できる機能が追加されました。
画像を選択すると「撮影データをキャプションに追加」というボタンができてくるで、そのボタンを押すと、キャプションに撮影データが入力されます。
デフォルトだと撮影データは以下のようなデータが入力されるようになっています。
- カメラのモデル
- 焦点距離
- 絞り値(F値)
- シャッタースピード
- ISO感度
- 撮影日
取得情報のカスタマイズ
この撮影データは、「js/config.js」の設定を変更することで変更することが可能です。
exif: {
captionEnable: "on",
saveData: "off",
requireField: ['FocalLength'],
captionFormat: '<%= Model %> (<%= FocalLength %>mm, f/<%= FNumber %>, <%= ExposureTime %>sec, ISO<%= ISOSpeedRatings %>) <%- ACMS.Library.Dayjs( DateTimeOriginal, "YYYY/MM/DD HH:mm") %>',
dataFormat: 'Model:<%= Model %>__FocalLength:<%= FocalLength %>__FNumber:<%= FNumber %>__ExposureTime:<%= ExposureTime %>__ISOSpeedRatings:<%= ISOSpeedRatings %>__DateTimeOriginal:<%= DateTimeOriginal %>'
},
項目 | 説明 |
---|---|
captionEnable | この機能を有効にするかの設定です |
saveData | 撮影データをユニットに保存するかの設定です |
requireField | ここで設定したexif情報がないと機能が有効になりません |
captionFormat | キャプション文字列の設定です |
dataFormat | データベースに撮影データを保存する場合の、フォーマットです |
issetオペレーターを追加
IFブロックなどで利用するオペレータに新しいものが追加されました。今までは空を判定するときは「em」というオペレーターを使っていたのですが、少し使いづらい仕様であったため今回のオペレーターを追加されました。
「em」は "0"も空と判定されるのに対し、「isset」は空文字の時のみ空と判定します。
オペレーター | 内容 |
---|---|
em | 内容が空の場合にtrue(ただし"0"も true と判定) |
nem | 内容がある場合にtrue(ただし"0"も場合は falseに判定) |
isset | 内容がある場合にtrue("0"であっても true と判定) |
nisset | 内容が空の場合にtrue("0"であっても false と判定) |
@extends機能で@sectionの入れ子ができるように改良
Ver. 2.8 で追加された「@extends機能」がパワーアップしました。以前までは「@section」は 入れ子 に出来なかったため、カスタマイズがしづらい場面がありました。
例えば、_layout.html で レイアウトを定義するのに @section を使ってしまうとその中で、さらに @sectionは使えません。
@section("main")
<div class="main">
@section("main-title")
<h2>タイトル</h2>
@endsection
@section("main-body")
<div class=body">
...
</div>
@endsection
</div>
@endsection
という事がVer. 2.8では出来ませんでしたが、Ver. 2.9.0ではできるようになりました。これによりより細かな継承を意識したテンプレートが作れるようになりました。
systemテーマに@sectionを追加
「@extends機能」の拡張に合わせて、システムテーマにも「@section」の仕込みを多く行いました。これにより管理ページをカスタマイズするときに、部分的なテンプレートのカスタマイズだけで済み、バージョンアップに強いカスタマイズが行えるようになります。
アクションボックスのカスタマイズ例
「アクションボックス」(エントリー作成・管理ページ・ログアウトボタンなど)をカスタマイズすることは多いと思います。今までは、カスタマイズしているテーマに「themes/system/admin/action.html」をコピーして利用していたと思いますが、カスタマイズする場所以外も全部もってくるため、カスタマイズした所がわかりにくい & バージョンアップ時に「action.html」に変更があった場合、バージョンアップされたテンプレートが反映されない状態でした。
これを「@extends機能」を使ったカスタマイズをしてみます。ここでは、「お知らせ作成」ボタンを新たに追加して「Ping送信」ボタンを削除してみたいと思います。
空の「themes/ご利用のテーマ/admin/action.html」を作成して以下のようにカスタマイズします。
@extends("/admin/_layouts/action.html") @section("entry-insert") @parent <form action="" method="post" class="acms-admin-inline-btn"> <input type="submit" name="ACMS_POST_2GET" value="<!--T-->お知らせ作成<!--/T-->" class="acms-admin-btn-admin"/> <input type="hidden" name="admin" value="entry-edit" /> <input type="hidden" name="bid" value="%{BID}" /> <input type="hidden" name="cid" value="2" /> </form> @endsection @section("ping-update") @endsection
エントリー編集画面の統一オプションを追加
a-blog cmsではエントリーの編集を行う画面が2つあります。1つはページ見たままのレイアウトで編集できる表側の編集ページ、もう1つは管理ページ側の編集ページです。編集ページへの行き方でそれぞれの編集画面が表示されるのですが、慣れた編集画面で毎回編集したいということもあるため、統一できるオプションを追加しました。
管理ページ > コンフィグ > 編集設定の「編集画面」で設定できます。デフォルトは従来の動きになっています。
エントリーの初期ステータスを変更できるオプションを追加
エントリー新規作成時のデフォルトの「エントリーステータス」を設定できるようになりました。いままでは「下書き」がデフォルトだったのですが、承認機能利用時など「公開」にし忘れることも多いため、運用に合わせてデフォルト値を変更していただくと便利です。
CMS-4269 テキストの置換機能をスタンダードに移動
Ver. 2.8 まではプロフェッショナル版以上で利用可能だった「テキストの置換」機能をスタンダード版でも利用できるように変更しました。
使い方
管理ページ > データ修正 の「テキスト置換」に移動します。
置換を行う対象のフィールドを指定します。指定できるフィールドはエントリー情報の以下の3つです。
- タイトル
- ユニット
- カスタムフィールド
次に置換対象の文字列と置換後の文字を指定します。
この状態で一括置換もできますが、「チェック」ボタンを押すことにより、置換対象を自分でチェックしてから置換することもできます。
新機能一覧
- CMS-4180 MySQL 8.0対応
- CMS-4198 OpenStreetMap対応(ユニット・カスタムフィールド)
- CMS-4193 PC, スマホ, タブレットのプレビュー機能を追加
- CMS-4244 プレビューの共有機能を追加(プロ版以上)
- CMS-4179 静的書き出しでエントリーの差分書き出しに対応(プロ版以上)
- CMS-4204 ブログ、カテゴリー、ユーザーに位置情報を追加(コンフィグ > 機能設定 で有効化)
- CMS-3648 srcset属性のパス補完に対応
- CMS-4194 ユーザー切り替え機能の追加
- CMS-4142 フォームのテンプレート内容を管理画面から編集できる機能を追加
- CMS-4190 extend@begginerテーマの追加
- CMS-4195 関連記事を複数もてる機能を追加(コンフィグ > 編集設定 で追加)
- CMS-4189 データベース定義を拡張する機能を追加(extension/schema ディレクトリ以下)
- CMS-4183 画像ユニットでexif情報をキャプションに追加できる機能を追加
- CMS-4185 issetオペレーターを追加(em: 0 も空と判定, isset: 空文字の時のみ空と判定 )
変更点一覧
- CMS-4201 @extends機能で@sectionの入れ子ができるように改良
- CMS-4212 フォーム管理画面のオプション指定のUIを改善
- CMS-4197 Entry_ArchiveListに年度表示を追加
- CMS-4206 カスタムフィールドグループの個々のフィールドでバリデーションできるように改良
- CMS-4174 エントリー管理画面に更新日時と作成日時を表示
- CMS-4221 フィールドグループをJavaScriptのバリデーションに対応
- CMS-4125 管理画面側のエントリー編集から承認機能が使用できるように対応
- CMS-4226 接続元IPアドレスが変わってもセッションが切れないように変更 (config.system.default.yaml : session_remote_addr_check)
- CMS-4214 フォームのセキュリティアップデート
- CMS-4268 site2018テーマのお問い合わせフォームのテンプレートをHTMLに変更
- CMS-4165 承認メールのFromを承認依頼したユーザーのメールアドレスにするオプションを追加
- CMS-4223 systemテーマに@sectionを追加
- CMS-4258 管理画面側でのエントリー編集で保存ボタンを画面に固定するように変更
- CMS-4191 OGPモジュールにエントリ詳細の時にdiscriptionを出力しないオプションを用意
- CMS-4145 エントリー編集画面の統一オプションを追加
- CMS-4234 エントリーの初期ステータスを変更できるオプションを追加
- CMS-4269 テキストの置換機能をスタンダードに移動
修正点一覧
- CMS-4196 ロール管理下での権限をわかりやすく表示をするように修正
- CMS-4224 ダイレクト編集で拡張ユニットを追加できるように修正
- CMS-4239 システム更新のパフォーマンスを改善
- CMS-4235 動的フォームのセレクト、ラジオの選択肢を入れ替えれるように改善
- CMS-4241 Touch_EditInplace をログイン状況を考慮するように修正
- CMS-4209 カスタムフィールドメーカーでフィールドグループのバリデーション対応
- CMS-4253 メールテンプレートでも@extendsが使用できるように修正
- CMS-4271 @sectionを検索キーワード指定すると表示が崩れる問題を修正