a-blog cms Ver. 3.2.0 アルファ版 を公開しました

現在開発中の Ver. 3.2.0 のアルファ版を公開します。

まだ開発初期段階ですので、本番環境では絶対に使用しないでください。テスト・お試しとしてご利用ください。

Ver. 3.2 アルファ版を試す方法

アップデートの場合

private/config.system.yaml に、以下コードを追記ください。

system_update_repository: http://www.a-blogcms.jp/api/update-edge.json

次に管理画面 > コンフィグ > 機能設定のオンラインアップデートで「マイナーバージョンも含める」にすることで、メニューから Ver. 3.2.0-alpha にアップデートできるようになります。


オンラインアップデートの対象にマイナーバージョンを含める

オンラインアップデートの対象にマイナーバージョンを含める


新規インストールの場合

新規でインストールする場合は、以下よりURL新規パッケージをダウンロードしてお使いください。

php7.3 〜 php8.3

https://developer.a-blogcms.jp/_package/3.2.0-alpha.3/acms3.2.0-alpha.3.zip

新機能

  • カスタムフィールドメーカーを改善
  • CMS-6817 WebP画像をそのままアップロードできるように対応
  • CMS-6895 カスタムユニットのデータがテキスト置換の対象外になってしまう問題を改善(シリアライズをしないように改善)
  • CMS-6915 自動でシステム更新(パッチバージョンのみ)をする機能を追加
  • CMS-6894 ログインユーザーの最終アクセス時間をダッシュボードやユーザー・会員一覧で確認できるように改善
  • CMS-6920 WordPress eXtended RSS 形式のエントリーエクスポート機能を追加
  • CMS-6930 ブロックエディターの組み込みJSを新しく用意 & ブロックエディターの新ユニットを追加
  • CMS-6979 Twigを利用できるテンプレート機能を追加
  • CMS-6821 エントリー一覧画面のUI・機能を刷新

検索結果をキャッシュさせない方法

a-blog cmsでは、フォーム送信後の結果を、ページを移動せずにAjaxを使用して表示できる機能が標準で実装されています。この方法は組み込みJavaScriptのpost include機能を利用します。(v1.3.0より)

基本的にはキャッシュ機能が利用できる状態の時には、post_include機能で追加で表示されるHTMLについても部分的にキャッシュされる事になります。そのためソート順をランダムとしていたとしてもキャッシュされ同じものが表示される事になります。

キャッシュ機能が利用されている時にも、ランダムが利用できるようにする方法を紹介します。

使用方法

実際にはキャッシュさせないという事ではなく、毎回違うURLでアクセスしているような状態にして処理しています。アクセス数が多いサイトの際にはキャッシュファイルサイズが大きくなりますので注意が必要になります。

Ver.2.7.xまでの記述

<form action="" method="post" class="js-post_include-ready">
<!-- キャッシュがオンでもランダム表示が可能になる記述ここから-->
<input type="hidden" name="hash" value="Math.random()" class="js-post_include-eval_value" />
<input type="hidden" name="query[]" value="hash" />
<!-- キャッシュがオンでもランダム表示が可能になる記述ここまで-->
</form>

class="js-post_include-eval_value"が書かれている事でvalueにはMath.random()というプログラムが実行され編集される事になります。

<input type="hidden" name="hash" value="Math.random()" class="js-post_include-eval_value" />

上記のHTMLが実行されると、0から1までのランダムな実数を生成するコードになり実際には以下のようになります。

<input type="hidden" name="hash" value="0.8770308238454163" class="js-post_include-eval_value" />

http://example.com/?hash=0.8770308238454163 のようなアドレスでアクセスする事になりますが、?hash= というアドレスにするためには以下の1行も必要になります。

<input type="hidden" name="query[]" value="hash" />

Ver.2.8.0からの記述

<form action="" method="post" class="js-post_include-ready">
<!-- キャッシュがオンでもランダム表示が可能になる記述ここから-->
<input type="hidden" name="hash" value="" class="js-random" />
<input type="hidden" name="query[]" value="hash" />
<!-- キャッシュがオンでもランダム表示が可能になる記述ここまで-->
</form>
<script>
  $('.js-random').val(Math.random());
</script>

a-blog cms Training Camp 2024 を開催しました!

11月15日(金)に名古屋国際センタービルにて「a-blog cms Training Camp 2024」 を開催し、20都道府県から55名の方にご参加いただきました。



a-blog cms Training Camp とは?
「a-blog cms cms Training Camp」(通称「合宿」)は、全国から a-blog cms のユーザーが集まり、a-blog cms に関するセッションに参加したり意見交換を行うなど、 a-blog cms の最大規模の勉強会・交流会としての役割を担っています。

概要

日程

2024年11月15日(金)13:30 - (懇親会 : 19:00 - )

会場

イベント会場
名古屋国際センタービル
愛知県名古屋市中村区那古野1−47−1

懇親会会場
楽楽 名駅店
愛知県名古屋市中村区名駅3-5-7 1F

セッション一覧

  • 公式テーマを活用して、効率よく開発するすすめ
    フォルトゥナ 坂本 邦夫さん
  • Webサイトのサーバー間移行作業での気づき −アップデートは主体性が大事だと思った経緯
    株式会社ルーコ 川﨑 絢加さん
  • 「Ver. 3.0 こんなつまずき」集 −3系のアップデートで遭遇した「えっ!こんなこと」とその解決方法
    株式会社データファーム 勝又 孝幸さん
  • a-blog cms on AWS - アップルップルさんのコーポレートサイトをAWSにお引越し!
    アルブストリクス株式会社 平山 智則さん
  • いまクライアントに提供するユニットのかたち
    A-Systems株式会社 石川 寿刀さん
  • 事例紹介2024 - ましじめ株式会社
    ましじめ株式会社 田村 章吾さん
  • エントリーの運用体験を改善するVer.3.2のアップデート
    有限会社アップルップル 宇井 陸登& 新井 慎之介
  • a-blog cms Ver. 3.2 アップデート:機能強化と新たな可能性
    有限会社アップルップル 伊藤 淳

公式テーマを活用して、効率よく開発するすすめ
フォルトゥナ 坂本 邦夫さん

a-blog cms 公式テーマ「Site」を使用して構築する際に、工夫していることやアクセシビリティ面の対応についてお話しいただきました。



Webサイトのサーバー間移行作業での気づき −アップデートは主体性が大事だと思った経緯
株式会社ルーコ 川﨑 絢加さん


Webサイトのサーバー間移行作業での経験から、アップデート方法の違いと手順を理解し、主体的に取り組むことの大切さについてお話しいただきました。


「Ver. 3.0 こんなつまずき」集 −3系のアップデートで遭遇した「えっ!こんなこと」とその解決方法
株式会社データファーム 勝又 孝幸さん

a-blog cms のメジャーアップデート作業で注意したこと、感じたこと、トラブルに対する解決方法を実際の事例を用いてお話しいただきました。



a-blog cms on AWS - アップルップルさんのコーポレートサイトをAWSにお引越し!
アルブストリクス株式会社 平山 智則さん


弊社サイトをはじめてAWS上で稼働させるサポートを行なった経験をもとに、a-blog cms 用に最適化したクラウドサーバーの設定や負荷検証、セキュリティ強化についてお話しいただきました。



いまクライアントに提供するユニットのかたち
A-Systems株式会社 石川 寿刀さん


標準ユニットの組み合わせで理想のレイアウトを実現するのが難しいというクライアントの声をもとに試行錯誤してきたユニットの現在のかたちをご紹介いただきました。



事例紹介2024 - ましじめ株式会社
ましじめ株式会社 田村 章吾さん


制作事例をもとに、実際に行ったカスタマイズをご紹介していただきました。



 エントリーの運用体験を改善するVer.3.2のアップデート
有限会社アップルップル 宇井 陸登 & 新井 慎之介


a-blog cms の次期バージョン「Ver. 3.2.0」で追加される機能の中から、エントリー管理や編集作業に関する機能に絞って紹介しました。ユーザーの運用体験をより快適にするための改良が施されています。




a-blog cms Ver. 3.2 アップデート:機能強化と新たな可能性
有限会社アップルップル 伊藤 淳


a-blog cmsの次期バージョン「Ver. 3.2.0」で追加された主要な新機能や改善点をご紹介いたしました。特にエントリー編集や運用体験の向上に力を入れ、新しいテンプレート機能やAPIの改善を行っています。



参加者の声


参加者からは「a-blog cms の"できること"が詰まったイベントだった」「現場の声が聞ける内容でありがたい」などの声が寄せられ、次期バージョンの 「Ver. 3.2.0」についても「嬉しい機能がたくさん」「使いやすそうで楽しみ」などポジティブな反応が多く集まりました。


最後に


登壇者の皆様、ご参加の皆様、ご協力いただいた皆様、誠にありがとうございました。また皆様にお会いできるのを楽しみにしております。


ユニット設定を使いこなす

ユニット設定画面

この記事は Advent Calendar 2024 の24日目の記事となります。a-blog cms に関する25日分の記事が公開されていますので、ぜひご覧ください。

https://adventar.org/calendars/9974

はじめに

この記事では、エントリー編集の基本機能であるユニットの設定について紹介します。意外と知らないことも多い設定方法について、この機会にいくつかのチップスをお届けします。

ユニット設定では、編集設定で追加した「ユニット追加ボタン」を押した際の挙動をカスタマイズすることができます。これにより、運用者にとって使いやすい編集画面を実現できます。ぜひ一度お試しください。

新規エントリー作成時に最初から追加されるユニットを設定する

この機能を知っている人は多いかもしれません。エントリー作成時にデフォルトで追加されているユニットを設定することができます。 標準テーマだと「メディア」と「テキスト」ユニットが設定されています。


初期ユニット

初期ユニット

設定方法

ユニット設定画面に移動すると「新規エントリー作成」という項目があるので、ここに初期ユニットを好きなように設定することができます。 例えばブログ的コンテンツの場合は、「メディア」「目次ユニット」「テキスト」などにしたり、専用のカスタムユニットを必ず入力する場合など初期から表示されていると便利です。


新規作成時のデフォルトユニット設定

新規作成時のデフォルトユニット設定


初期ユニットの表示例

初期ユニットの表示例

初期値を設定する

ユニット追加時にデフォルト値を設定することができます。設定はユニット設定画面から行い、各ユニットに対して指定します。

設定例

テキストユニット


マークダウンを初期設定に

マークダウンを初期設定に

マークダウンでのみテキスト入力する場合は、テキストユニットのデフォルトを「マークダウン」にしておくことで、毎回マークダウンを選択する手間をなくすことが出来ます。

メディアユニット


配置と初期画像を設定

配置と初期画像を設定

「配置」を中央寄せにすることが多いので、デフォルトで配置を中央にしておきます。 またデフォルトのメディアIDを設定することにより、ユニット追加時に画像が設定されている状態にできます。 例えばエントリーの下書き時に、まだ画像がないけど画像を入れる予定がある場合などに、ひとまず仮の画像を設定する手間が省けます。

複数のユニットの組み合わせを一度に追加する

以下のような設定を行うことで、ボタン1つで複数ユニットを一度に追加することも可能になります。 例えば、ユニットグループを使用して段組する時、複数ユニットを組み合わせる必要があり、また設定する箇所が多いです。このような時に便利です。

設定例

メディアユニットとテキストの組み合わせを2カラムの段組にしたい場合を考えてみます。 まず「編集設定」ページで新しく「ユニット追加ボタン」を追加します。重要なのは「モード」は「拡張」を選び、値は適当な文字列(ユニット拡張ではない)に設定することです。


新しいユニット追加ボタンを追加

新しいユニット追加ボタンを追加

次にユニット設定画面に移動すると「2段組(画像+テキスト)」という枠ができていますので、ここにメディアとテキストのユニットをユニットグループで二段組になるように追加・設定します。


複数ユニットで2段組ユニット設定

複数ユニットで2段組ユニット設定

以上で設定完了です。エントリー編集ページで「2段組(画像+テキスト)」ボタンを1つ押すだけで、ユニットが4つ挿入され、以下のようなレイアウトを瞬時に組むことが可能になります。


ユニットの表示例

ユニットの表示例

ユニットグループを使った段組レイアウトは、理解をするのが難しくなかなか使いこなせません。
ただこのように最初から設定された状態でユニット追加ができることにより、運用者が簡単に段組レイアウトを実現することができるようになります。

定型ユニットを用意する

最後定型ユニットを追加する方法です。こちらは特に独自の設定があるわけではなく、運用しやすい編集画面を用意する上でのアイデアになります。

設定例

例えば、以下のような定型ユニットを考えてみます。

  • スタッフ募集の定型文ユニット
  • 休業日のお知らせ定型文ユニット
  • お問い合わせ先の定型文ユニット

ユニット追加ボタンの設定

ユニット追加ボタンの設定


定型文をユニット設定画面で設定

定型文をユニット設定画面で設定

このように、サイトを運営していく上でよく使用するような文章やパーツをボタン1つで追加できるようにしておくことでスムーズに記事を更新できるようになります。

以上になります。 カスタムフィールドの設計だけではなく、ユニット設定もしっかり設定することで、運用しやすくお客様に喜ばれる編集画面を提供できます。 ぜひ試してみてください!!

ページ遷移なしで検索結果を表示する

a-blog cmsでは、フォーム送信後の結果を、ページを移動せずにAjaxを使用して表示できる機能が標準で実装されています。この方法は組み込みJavaScriptのpost include機能を利用します。(Ver. 1.3.0より)

通常は検索フォームにデータを入力して送信ボタンを押すと、新しいページを読み込んで検索結果を表示しますが、この機能を利用するとページを移動せずに同じページ内で検索結果を表示することができます。

デモ

検索ボタンをクリックするとこの部分が置き換わります。

実装方法

ここでは例として、サイト内検索フォームから検索すると、ある特定のコンテンツエリアを書き換えて検索結果を表示する手順を説明します。

1.テンプレートを用意する

フォームを送信した後に表示する内容をテンプレートとして用意します。ここではsearchResult.htmlというテンプレートを用意するとします。このテンプレートには検索結果の表示部分のみ記述しています。

<!-- BEGIN_MODULE Entry_List -->
<ul><!-- BEGIN entry:loop -->
  <li><a href="{url}">{title}</a></li><!-- END entry:loop -->
</ul>
<!-- END_MODULE Entry_List -->

2.モジュールIDを作成する

「1.テンプレートを用意する」で作成したモジュールをモジュールIDにし、引数設定の[keyword]にチェックを入れます。これで、フォームから送られたキーワードに合致するエントリーが表示されるようになります。

<!-- BEGIN_MODULE Entry_List id="searchResult" -->
<ul><!-- BEGIN entry:loop -->
  <li><a href="{url}">{title}</a></li><!-- END entry:loop -->
</ul>
<!-- END_MODULE Entry_List -->


3. フォームを用意する

(1)サイト内検索フォームを用意します。

<form action="" method="post">
    <input type="text" name="keyword" value="" size="15" />
    <input type="hidden" name="bid" value="6" />
    <input type="submit" name="ACMS_POST_2GET" value="検索" />
</form>

(2)form要素にclass属性とtarget属性を追加します。「class="js-post_include"」はこのとおりに記述し、target属性は#の後に任意の名前を記述します。("#"はidを意味しています)このtarget属性は検索結果の表示を置き換える場所を指定しています。

target属性がない場合は、form自体が検索結果表示に置き換わります。

<form action="" method="post" class="js-post_include" target="#jsChangeContents">
    <input type="text" name="keyword" value="" size="15" />
    <input type="hidden" name="bid" value="6" />
    <input type="submit" name="ACMS_POST_2GET" value="検索" />
</form>

(3)検索結果を表示するテンプレートを参照します。 例)include/searchResultSample.html というテンプレートを参照する場合の例です。

<form action="" method="post" class="js-post_include" target="#jsChangeContents">
    <input type="text" name="keyword" value="" size="15" />
    <input type="hidden" name="bid" value="6" />
    <input type="hidden" name="tpl" value="include/searchResultSample.html" />
    <input type="submit" name="ACMS_POST_2GET" value="検索" />
</form>

4. 検索結果表示部分と関連付ける

検索結果を表示したいコンテンツエリアに、formのtarget属性と同じ名前を付けます。手順2(2)で指定したtarget属性の値と同じ名前が付いている要素部分が、検索結果表示として置き換わります。

target属性で指定した要素自身を置き換えるか、その中身を置き換えるかを設定することができます。設定の詳細は「post includeの基本設定」の「postIncludeMethod」を参照してください。

例)formのtarget属性で"#jsChangeContents"と記述した場合

<div id="jsChangeContents">
<p>この部分が置き換わります。</p>
</div>

これで、検索結果を別ページに移動せずに表示できるようになります。

フォームそのものを表示させずに検索結果を表示することも可能です。詳細は「送信ボタンを押さずに検索結果を表示する(post include)」を参照してください。