コンテンツの読み込みに時間がかかっています

8ページ目

コンフィグセットを利用していない時にコンフィグセット管理を表示させないカスタマイズを考えてみる

a-blog cms の設定をコンフィグと呼び、その設定はブログ単位に設定をすることができます。その設定に名前をつけて複数管理したり、その設定を共有したりすることができるのが「コンフィグセット」です。

このコンフィグセットができた事から、同じ設定を複数の子ブログで設定が楽になったりしていますが、1つしかコンフィグを利用しないような時にも現在は、このコンフィグセット管理の画面を表示させて「このブログの初期コンフィグ」をクリックして「コンフィグ管理」の画面を表示させる必要があります。

テンプレートのカスタマイズだけで1ステップ減らすには

以下の 3つを行うことで実現が可能になる。

  • コンフィグセットを作っていない時にはコンフィグ管理を表示
  • コンフィグセットが作ってある時にはコンフィグセット管理を表示
  • コンフィグ管理の画面に(コンフィグセットの作成)ボタンを追加

これらの実装を考える際には、3つのファイルをカスタマイズします。この実装をする際にやるべき事は「このブログの初期コンフィグ」以外の行が無い時に「コンフィグ管理」にリダイレクトするということです。



コンフィグセット管理 http://localhost/bid/1/admin/config_set_index/
コンフィグ管理 http://localhost/bid/1/admin/config_index/

コンフィグセット管理のテンプレートをカスタム

themes/system/admin/config/set/index.html を自分のテーマの中に移設して修正します。使ってるモジュール名は Admin_Config_Set_Index というもののようです。

<!-- BEGIN_IF [<!-- BEGIN_MODULE Admin_Config_Set_Index --><!-- BEGIN config_set:loop -->{name}<!-- END config_set:loop --><!-- END_MODULE Admin_Config_Set_Index -->/em] --><!-- BEGIN_SetRendered id="redirect" --><meta http-equiv="refresh" content="0; URL=%{HOME_URL}bid/%{BID}/admin/config_index/"><!-- END_SetRendered --><!-- END_IF-->

どこでもいいので、このページの中に上記の1行を追加してみましょう。

  1. Admin_Config_Set_Index の config_set:loop を繰り返し {name} を表示させる。
  2. 上記の表示結果に値が何かあるかを IFブロックで判定
  3. <meta http-equiv="refresh" content="0; URL= ... でリダイレクト用のタグを書く
  4. SetRendered id="redirect" でメタタグを保存して消す

という流れで1つ目のファイルの修正が完了です。

管理画面のテンプレートファイルをカスタム

テーマの中に admin.html があれば、それを無かったら themes/system/admin.html を自分のテーマの中に移設して修正します。

@section("admin-meta")
@parent
<!-- GET_Rendered id="redirect" -->
@endsection

これで、コンフィグセット管理のテンプレートを表示した時の SetRendered id="redirect" があったら、その部分がこちらに移動してきます。

結果、リダイレクト処理が動くことになります。

最後に(コンフィグセットの作成)ボタンを追加

この状態だと、コンフィグセットが作れなくなってしまうのでコンフィグ管理のテンプレートファイル themes/system/admin/config/index.html にボタンを追加します。ボタン自体は themes/system/admin/config/set/index.html にあるものをそのまま持ってきたらいいでしょう。

<!-- BEGIN_MODULE Touch_SessionWithAdministration -->
<form action="" method="post" class="acms-admin-margin-bottom-small clearfix">
  <input type="hidden" name="bid" value="%{BID}" />
  <input type="hidden" name="admin" value="config_set_edit" />
  <input type="hidden" name="edit" value="insert" />
  <input type="hidden" name="query[]" value="edit" />
  <button type="submit" name="ACMS_POST_2GET" class="acms-admin-btn acms-admin-btn-success acms-admin-float-right">
    <!--T-->コンフィグセットの作成<!--/T-->
  </button>
</form>
<!-- END_MODULE Touch_SessionWithAdministration -->

位置は、お好みで構いませんが、</header> の下くらいがいいでしょう。

最後に

これで、今回のコンフィグセットが作られていない時に、管理画面の「コンフィグセット管理」の画面を1つ飛ばして「コンフィグ管理」を表示させるカスタマイズは完了です。

a-blog cms の管理画面のカスタマイズは、簡単にテンプレートファイルを修正することで可能です。カスタマイズする人次第で管理画面は自由にカスタマイズが可能です。皆さんの a-blog cms は、どんなカスタムを行ってますか?



編集者権限でバナーモジュールをフロント側で編集できるような UI を使えるような実装を考える

先日、ネットミーティングの中で「管理者じゃないとモジュールIDの設定を表から変更できないのが困っている」と相談がありました。本来は編集者権限を渡したいのに、この機能を使うために仕方がなく管理者を渡さないといけない状況とのことでした。

まず、管理者の時の表示としてはモジュールの右上に「モジュール」というリンクが表示されます。



しかし、編集者の時にはこの「モジュール」というものは出てきません。

この機能としては、管理者がモジュールIDの設定(条件設定・編集設定・カスタム設定)を変更するためのものなので「モジュール」という表示になっています。

サイトの運営をする人たちのためであれば「編集」というラベルでないと「モジュール」と書かれていても分からないかもしれません。

@include("/admin/module/setting.html")

中身を確認してみると

<!-- BEGIN_MODULE Touch_NotPreview -->
<!-- BEGIN_MODULE Touch_SessionWithAdministration -->
<!-- BEGIN module_setting -->
<!-- BEGIN_IF [{admin_module_mid}/nem] -->
<p class="{{class|default('acms-admin-module-edit')}}"><a href="#" class="js-module_management" data-bid="{admin_module_bid}" data-mid="{admin_module_mid}"><!--T-->モジュール<!--/T--></a></p>
<!-- ELSE -->
<p class="{{class|default('acms-admin-module-edit')}}"><a href="{admin_module_url}" class="js-dialog-btn js-link_no_rewrite"><!--T--><!--$1-->{admin_module_name}<!--/$1--> を編集<!--/T--></a></p>
<!-- END_IF -->
<!-- END module_setting -->
<!-- END_MODULE Touch_SessionWithAdministration -->
<!-- END_MODULE Touch_NotPreview -->

タッチモジュールで権限を見直してみる

Touch_SessionWithAdministrationモジュール で囲まれていることで 管理者のみ表示 されるという事になります。まず思いつく方法とすれば、このタッチモジュールを管理者の設定を編集者以上の設定 Touch_SessionWithCompilation に変えることが思いつきます。 場合によっては、管理者にだけ表示しているエリアを編集者以上に表示可能にするということで大丈夫かもしれませんが、権限の問題でこの方法では解決することができませんでした。

ショートカット機能を利用してみる

a-blog cms の管理画面には、各所に(★ ショートカットに追加)というボタンがあります。これを使うことで、ダッシュボードやショートカット一覧に管理画面をブックマークするようなことが可能になります。

フロント側から利用するという目的からすると解決にはなりませんが、どのような URL になるのか確認してみます。

モジュールID一覧から

http://localhost/bid/1/admin/module_edit/?mid=2&edit=update#acms_box2

ショートカット一覧から

http://localhost/bid/1/admin/module_edit/?mid=2#acms_box2

あれ? 同じだった。予想では、ココが違っててショートカットの URL を使えばいいと思ったのですが...

ショートカット機能を利用してみる その2

このブログの記事では、全部終わってから結論だけ書くということではなく、どうやって実装するかを考えていく部分も共有すべく書いていますので、上記の2つはボツ案になっています。

ショートカット機能を利用してみる では、管理者で確認していたのですが、今回の目的である編集者の時で確認するべきでした。

モジュールID一覧 (メニューに無いので URL を直接)

http://localhost/bid/1/admin/module_edit/?mid=2&edit=update#acms_box2


この URL でアクセスすると 表示設定 は出てきますが、条件設定はデータが無く正常に保存することができません。

ショートカット一覧から

http://localhost/bid/1/admin/config_media_banner/?mid=2


URL が変わりました! このURL の時には編集者でも情報を更新が可能になっています。管理者とは違い、編集者では条件設定を触ることができないので、編集者には 表示設定 のタブのみが表示されます。

a-blog cms しっかり権限によって管理画面が作られていることが確認できます。

暫定対応を考える

@include("/admin/module/setting.html") の代わりに、以下のようなコードを書くことで Media_Banner モジュールのところだけ希望の動きをするようになります。

develop ・ utsuwa テーマの中で使われている実装を見つけました。

<!-- BEGIN_MODULE Touch_SessionIsCompilation -->
<p class="acms-admin-module-edit acms-admin-module-edit"><a
    href="/bid/{admin_module_bid}/admin/config_media_banner/?mid={admin_module_mid}"
    class="js-dialog-btn js-link_no_rewrite">編集する</a></p>
<!-- END_MODULE Touch_SessionIsCompilation -->


config_media_banner の部分が、Navigationモジュールの時には config_navigation であったりする必要があるのですが、この部分を手動で書かないとうまく動かないです。各モジュールの共通変数でモジュール名を表示させるものがあったらいいのですが...

解決編

admin_module_mid の記述をしているプログラムを探して、admin_module_url という便利な変数を見つけました。これを利用すると、そのまま欲しい URL が生成してくれるようです。

ということですので /admin/module/setting.html のファイルをカスタマイズすることにし、まずは利用するテーマの中に setting.html をコピーします。

@include("/admin/module/setting.html")

そして Touch_SessionWithAdministration の下に、編集者のみ表示の Touch_SessionIsCompilation のモジュールを追加し、{admin_module_url} の変数を活用した記述を追記します。

<!-- BEGIN_MODULE Touch_NotPreview -->
<!-- BEGIN_MODULE Touch_SessionWithAdministration -->
<!-- BEGIN module_setting -->
<!-- BEGIN_IF [{admin_module_mid}/nem] -->
<p class="{{class|default('acms-admin-module-edit')}}"><a href="#" class="js-module_management" data-bid="{admin_module_bid}" data-mid="{admin_module_mid}"><!--T-->モジュール<!--/T--></a></p>
<!-- ELSE -->
<p class="{{class|default('acms-admin-module-edit')}}"><a href="{admin_module_url}" class="js-dialog-btn js-link_no_rewrite"><!--T--><!--$1-->{admin_module_name}<!--/$1--> を編集<!--/T--></a></p>
<!-- END_IF -->
<!-- END module_setting -->
<!-- END_MODULE Touch_SessionWithAdministration -->
<!-- BEGIN_MODULE Touch_SessionIsCompilation -->
<p class="acms-admin-module-edit acms-admin-module-edit"><a
    href="{admin_module_url}"
    class="js-dialog-btn js-link_no_rewrite">編集する</a></p>
<!-- END_MODULE Touch_SessionIsCompilation -->
<!-- END_MODULE Touch_NotPreview -->

この時には、モジュールという言葉を知らない編集者の方にも伝わりやすいように「編集する」というラベルにしておくことでバナーを編集できるんだね。ってことが伝えやすくなります。



これで、編集者権限でモジュールの表示設定が可能になります。この実装をすることによって全てのモジュールの表示設定が編集者で可能になってしまいます。

勝手に Entry_Summary の設定を触られたくないということもあるかもしれませんので、その際にはバナーのモジュールとか触って大丈夫なところだけ /admin/module/setting.html ではなく、/admin/module/editor_setting.html のように違うテンプレートを読み込むような実装をした方がいいこともあるかもしれません。

1時間前には、この実装は標準にするべきでは!っと思って書いていましたが、最終的なこの時点での結論としては、やはりカスタマイズで実装した方がいいかもに変わっています。皆さんは、どう思われますか?


GT-ONE から Dshot updated Racing Wheel Stand に、そして PS5 を導入

2004年からということでアップルップルが名古屋に移転する前から愛用していた GT-ONE というレーシング コクピットをリプレイスする事にしました。この赤いシートは社内にあるどの椅子より長く利用されていたという事になります。

ハンコンの歴史

2008年の頃の写真です。 PS2 の頃は GT FORCE Pro 、PS3 になって G25 Racing Wheel 、PS4 で現在の G29 Racing Wheel と買い替えているようです。過去のブログから情報を探してみると PS3 の頃に Driving Force GT をお借りして試してた事があったみたいですね。




PS5 を導入

最初は グランツーリスモ 7 がリリースされたタイミングで PS5 にリプレイスを考えていたのですが、なかなか入手できず PS4 でも遊べていたので、今まで PS4 で遊んでいました。 今回 PSVR2 が発表され、グランツーリスモ 7 のほとんどの機能が VR で遊べるようになったという事を聞きリプレイスする事になりました。

Amazon で買いたい!を申告しておき、買えるようになったら連絡が来るという制度を使って買ったのですが、今週の休みに店舗でも普通に買える状況になっている事を確認したので、もう普通に欲しい人の手に届くようになった 2023年春のようです。

という事で、PSVR2 も近日到着予定です。


Racing Wheel Stand を導入

タイトルにもあるように、これまでのシート込みのセットから ハンコン+ペダルを固定するだけのものにリプレイスする事になりました。


これにより 20年近く仕事場に、それなりの大きなスペースをとっていたモノをコンパクトにする事ができるハズです。きっと邪魔だったと思いますので社内の誰もが喜んでくれる事でしょう。

これまではフォーミュラのように低いポジションでしたが、普通に仕事で利用している椅子に座って走るようになるので、乗用車ポジションになる事に。

ハンコンのリプレイスは?

実は、上の方にも書いているのですが、PS2 → PS3 → PS4 と変えているタイミングでハンコンもアップデートしている歴史があるのですが、今回は PS4 で利用していた G29 Racing Wheel が PS5 でも使えるという事ですので、このままで運用予定です。

G29 の後継で G923(58,190円) が 2020年にリリースされており、さらに昨年 PRO RACING WHEEL(119,900円)という上位版がリリースされています。どちらも TRUEFORCE という新しいフォースフィードバック技術が採用されているので、よりリアルに感じるようになるという事ですので、今の G29 が壊れたら G923 にする事でしょう。

PSVR2 導入編に続く

まずは PS5 に変わるタイミングをきっかけに、長くお世話になったハンコンスタンドをリプレイスし、できたらディスプレイも無しで VR だけにできたらと思っています。

貰い手が見つかるかわかりませんが、現在 GT-ONE という レーシング コクピット を欲しい人を探しています。取りに来てもらえれば無料で差し上げます。


知らなかったのですが macOS 12以降にはノイズキャンセルマイク機能は標準搭載

今日現在の macOS は 13.2.1 が最新バージョンです。新しいバージョンがリリースされても、この数年これはイイって思うことも少なくなってきており機能についての情報のアップデートができておりませんでした。

この数年「なんで AirPods にはノイズキャンセルマイクが機能として無いの?」って言っておりました。ゴメンナサイ。

利用するには

メニューバーの右から 時計、Siri、その次にあるコントロールセンターのアイコン(スイッチが縦に2つ並んでいるアイコン)をクリックしてみてください。

無いじゃない! って思う人もいるかと思います。

このマイクモードは、マイクを利用するアプリケーションが起動している時にしか表示されません。 また、アプリケーション毎の設定になりますので、一度 Zoom で設定しておけば Zoom の時だけ、その設定が有効という事になります。

アップルのサイトでは FaceTime でしか説明がありませんが、他のアプリケーションでも機能します。


これ、コントロールセンターと言うらしいです。(説明を書くのに調べて知りました)そこにある マイクモード をクリックするとモードを切り替えることが可能です。


ここにある 声を分離 を設定しましょう! これだけです。 周囲の音と音声が分けられ音声だけマイクで拾えるようになります。

対応可能な Mac は

macOS 12 Monterey 以降の OS を搭載している 2018年以降の Mac で利用が可能です。2021年10月 から使えていた事になります。

macOS と同様に iOS でも同時期の iOS 15 からも利用可能で、マイクを使うアプリを起動している時に iPhone のコントロールセンターを開くと設定が可能です。

ノイズキャンセルマイク機能と言っていいのかな?

Apple 的には、日本語では 声を分離 、英語では Voice Isolation という言い方しかしていないですが、私としてはノイズキャンセルマイク機能って言った方がイメージしやすいんじゃないかと思って書いております。

利用するアプリによって変えた方がいいだろうから、ハードウェアでするよりソフトウェアでって事なのかもしれませんね。という事で、AirPods にはハードウェア側で対応することはないんでしょうね。


今年用意した初心者のための a-blog cms コンテンツ

まずは 8つの 5分くらいの動画「動画で基礎から学ぶ a-blog cms」で 40分勉強した後で、4つのハンズオン「静的HTMLサイトからCMSのテーマを作ってみよう」をやってみてもらいたい。

これで何となく a-blog cms でオリジナルのテーマを作る方法が分かるようになるんじゃないかと思っているが、どうでしょうか? 分かりにくい部分があったら教えて欲しいです。


動画で基礎から学ぶ a-blog cms

初心者向けのオンライン勉強会については、以前は何も知らない人向けに2時間ほどライブでオンライン勉強会を行なっておりました。そこを今年は8つの短編動画を用意して、まずは動画をみてください。という形式に変えることにしました。

また、毎月 a-blog cms live というオンラインイベントを開催し、そのアーカイブも公開していますので、そちらもよかったらご覧ください。そして、a-blog cms 公式 YouTube チャンネル のチャンネル登録もお願いします。

静的HTMLサイトからCMSのテーマを作ってみよう



a-blog cms のバージョンとアップデートについて

a-blog cms Advent Calendar 2022 の 16日目の記事になります。今回は、a-blog cms のバージョンについて少し書いてみようと思います。

a-blog cms のメンテナンスポリシー

以前は a-blog cms は 2.10.0 がリリースされると 2.9.x でバグが見つかっても、2.10.x の最新版を利用をお願いし、何かあれば最新版へのアップデートが必要な状態でした。

しかし、3年前の 2019年12月 2.11.0 のリリースタイミングで、メンテナンスポリシーを公表し、バグフィックスは 2年セキュリティーフィックスは 5年 と設定され、最長5年はセキュリティー上の問題が見つかった時に新しいバージョンをリリースする体制となりました。

以下にサポートコンテンツにある メンテナンスポリシー の表を転載しておきます。



バージョン 最終バージョン マイナーバージョンリリース日 不具合修正(期限日) セキュリティ修正(期限日)
1.7 1.7.0 2013/06/24 - -
2.0 2.0.1.1 2013/12/18 - -
2.1 2.1.1.4 2014/06/23 - -
2.5 2.5.1.3 2015/04/23 - -
2.6 2.6.1.4 2015/12/25 - -
2.7 2.7.34 2017/03/30 - -
2.8 セキュリティ修正のみ 2018/03/26 2020/03/26 2023/03/26
2.9 セキュリティ修正のみ 2018/10/09 2020/10/09 2023/10/09
2.10 セキュリティ修正のみ 2019/02/28 2021/02/28 2024/02/28
2.11 メンテナンス中 2019/12/17
2022/12/17
2024/12/17
3.0 メンテナンス中 2021/12/24 2023/12/24 2026/12/24

こちらを確認すると、今日の段階では 2.8.x / 2.9.x / 2.10.x がセキュリティフィックス対応のバージョンとなっており、2.11.x / 3.0.x がバグフィックス対応のバージョンである事が分かります。ちなみに、2.11.x については 3.0.0 のリリースに時間がかかった事からバグフィックスの期間を特別に2年から3年に変更されておりました。

2.11.x のバグフィックス版のリリースが終わります

今回のエントリーの一番伝えたいところになりますが、実は明日が 2022/12/17 でバグフィックス対応が終わる日となっております。まだセキュリティ上危険だと判断した修正については 2024/12/17 まで続きますが、バグが見つかったとしても 3.0.x しか修正されなくなります。

そんな今日ですが、a-blog cms Ver. 2.11.56 がリリースされました。(リリースノート)今後は セキュリティーフィックス で 2.11.57 、2.11.58 などはリリースされるので最後のバージョンではありませんが、どこかのタイミングで、3.0.x へのアップデートもご検討ください。


2023年度になると 2.8.x のセキュリティ対応が終了に

また、2.8.x を利用されているサイトについては、今年度末までは大丈夫ではありますが、来年度になるとセキュリティ上問題があっても新しいバージョンはリリースされない事になります。正確な日程としては 2023/03/26 が最終日になります。

今は、セキュリティ上修正したいところが見つかった時には、2.8.x / 2.9.x / 2.10.x / 2.11.x / 3.0.x の 5つのバージョンをアップデートしています。多くのバージョンを並行してサポートしていくコストもありますので、この点はご了承いただきご利用ください。

ライセンスのバージョンアップ費用について

a-blog cms は 1.0 から 2.10 までバージョンアップに費用をいただいておりませんでしたが、上記のように古いバージョンもしっかりサポートするためにアップデート時に 11,000円(税込) の費用をいただく事になりました。

a-blog cms は現在、セマンティックバージョニングを採用しております。上記のアップデートに費用がかかるものは、メジャーバージョンアップとマイナーバージョンアップというところになり、パッチバージョン については費用がかかりません。

また、アップデートについては1年間分の権利として提供していますので、今日 3.0.x にアップデート費用をお支払いして、1年以内の 2023年夏に 3.1.x にアップデートする際には、追加で費用はかかりませんのでご安心ください。


PHP のバージョンについて

バージョンアップを考えないといけない時の一番多くは、利用している PHP についてサーバー側の PHP サポート終了のタイミングでしょう。

  • PHP 7.4.x対応 については、Ver. 2.11.15 以降である必要があります。
  • PHP 8.0.x対応 については、Ver. 3.0.0 以降である必要があります。
  • PHP 8.1.x対応 については、Ver. 3.0.12 以降である必要があります。

2.11.x の場合については、ionCube Loader の設定も変更が必要になりますので注意ください。3.0 から ionCube Loader が廃止されているのでアップデートが少し楽になりましたね。

アップデートに注意が必要な時があります

12/10 の a-blog cms Advent Calendar 2022 すずきカレー さんのポッドキャスト「a-blog cms★のんびりラジオ 2」の中でも話題に出してもらえていた「各バージョンのアップデート変更点まとめ」を参考にしてください。


バージョンアップをしている際に、前のバージョンとの互換性がなく、設定の修正やテンプレートの修正が必要になる事があります。

クライアントさまに、11,000円の費用がかかる事に加えて、少し作業やチェックが必要になる分もコストを考えつつ、アップデートをご検討ください。この点はご迷惑をおかけしますが、よろしくお願いします。

パッチバージョンは最新にしよう!

管理画面 /bid/1/admin/update/ からバージョンアップは簡単にできます。ぜひ、ご利用のバージョンで新しいパッチバージョンがリリースされていたら(今すぐ更新)から新しいバージョンをご利用ください。

管理画面上でも修正点は確認できますし、リリースノートのページ にもアップデート内容は掲載しております。