テキスト入力にインラインエディターを使用する

すでにテキストユニットに導入されているインラインエディタですが、このインターフェースはカスタマイズ次第でブログやカテゴリー、エントリーなどのカスタムフィールドとしても利用可能です。ここではその方法について、登録側(管理画面)と表示側に分けてご紹介します。

管理画面の記述

以下が、インラインエディターが実装された、カスタムフィールドのサンプルHTMLになります。

<table class="acms-admin-table-admin-edit">
  <tr>
    <th>インラインエディター</th>
    <td>
      <textarea name="sample_text" class="js-lite-editor-field acms-admin-form-width-full">{sample_text}</textarea>
      <input type="hidden" name="field[]" value="sample_text" />
    </td>
  </tr>
</table>

表示側の記述

表示したいインラインエディターの変数がsample_textであった場合、以下のように記述します。エントリーのカスタムフィールドで作成した場合はEntry系モジュールのentry:loop内に記述してください。校正せず、そのままのデータを出力する校正オプション[raw]を記述してください。

{sample_text}[raw]

ボタンの位置、クラス名、ボタンのオプションの変更

テキストユニットで導入されているインラインエディターとはオプションの指定方法が異なります。
a-blog cms Ver.2.11.40 の時点で LiteEditorFieldConf の設定がデフォルトで空になっているため、カスタムフィールドでLiteEditorを使用する場合は適用しているテーマ内にJavaScriptファイルを別途作成して設定ください。
ACMS.Config.LiteEditorFieldConf.xxxという記述で設定を下記のように適用します。

ACMS.Ready(function(){
  ACMS.Config.LiteEditorFieldConf.btnPosition = 'bottom';
  ACMS.Config.LiteEditorFieldConf.classNames = {
    LiteEditor: 'entryFormLiteEditor',
    LiteEditorBtnGroup: 'acms-admin-btn-group acms-admin-btn-group-inline',
    LiteEditorBtn: 'acms-admin-btn',
    LiteEditorBtnActive: 'acms-admin-btn acms-admin-btn-active',
    LiteEditorBtnClose: '',
    LiteEditorTooltipInput: 'acms-admin-form-width-full'
  };
  ACMS.Config.LiteEditorFieldConf.btnOptions = [
   { label: 'リンク', tag: 'a', className: '', sampleText: 'リンクテキスト' },
   { label: '強調', tag: 'em', className: '', sampleText: ' ' },
   { label: '重要', tag: 'strong', className: '', sampleText: ' ' }
  ];
});

LiteEditorのデフォルトボタンをそのまま維持したい場合はbtnOptionsを下記のように指定します。

ACMS.Config.LiteEditorFieldConf.btnOptions = [
  { label: '<span class="lite-editor-font-back"></span>', action: 'undo', group: 'action' },
  { label: '<span class="lite-editor-font-go"></span>', action: 'redo', group: 'action' },
  { label: '<span class="lite-editor-font-link"></span>', tag: 'a', className: '', group: 'mark' },
  { label: '<span class="lite-editor-font-bold"></span>', tag: 'strong', className: '', group: 'mark' },
  { label: '<span class="lite-editor-font-italic"></span>', tag: 'i', className: '', group: 'mark' },
  { label: '<span class="lite-editor-font-underline"></span>', tag: 'u', className: '', group: 'mark' }
];

a-blog cms Ver. 3.2.0 で予定している機能追加や機能改善について(ロードマップ)

Roadmap Ver. 3.2

いつもお世話になっております。

a-blog cms では、より使いやすいプロダクトを目指して日々改善を行っています。
今回は次期マイナーバージョンである、a-blog cms Ver. 3.2.0 で予定している機能追加や機能改善をまとめてご紹介します!

実際のリリースされた製品では内容や機能が違っている可能性がございます。

新機能

Ver. 3.2 で予定している新機能についてです。全く新しい機能というわけではなく既存機能を改善・より便利にする機能追加となります。

エントリー編集画面の改善

一番よく使用するエントリーの編集画面について以下改善を予定しております。より簡単・便利にエントリー編集ができるようになります。

  • デフォルトのテキストユニットを、よりリッチで使い易いエディタに改修(メディア挿入・簡易的なwysiwyg機能)
  • ユニットグループ機能改善(グループ化できる専用ユニットの用意)
  • ユニットの複製機能を追加
  • UI調整(全体的にボタンが多いのでシンプル化)

アップデート自動化

フィックスバージョンに限り、自動でアップデートを行うオプションを用意いたします。 これにより、CMSアップデートの手間が少なくなり運用コストを削減できます。

Movable Type形式 or WordPress形式でのエクスポート機能

現状以下の形式のものをa-blog cmsにインポートできるようになっていますが、逆にエクスポートする機能は用意されていませんでした。

  • CSVインポート
  • Movable Type形式のインポート
  • WordPress形式のインポート

この状況はもし他のCMSに乗り換える場合の出口として選択肢がなく、お客様にとっても不安材料になるため、Movable Type形式かWordPress形式のエクスポート機能を用意することになりました。まだ形式は決定していませんが、例えば Movable Type形式でエクスポートできれば、WordPressにもインポートはできるので、柔軟なエクスポート形式を検討したいと思います。

開発者向け新規テーマの追加

新しい開発者向けの新規テーマを追加予定です。既存の「develop」テーマを改良する形を予定しております。 新しいテーマの技術スタックは以下のものを予定しております。

  • Vite(ビルドツール)
  • Tailwind CSS(CSSフレームワーク)
  • Alpine.js(軽量フロントエンドフレームワーク)
  • HTMX(インタラクティブUIを実現するJavaScriptライブラリ)

また「develop」テーマと違い、標準の状態でトップ、一覧、詳細ページのテンプレートを用意したいと思います。

機能改善

Ver. 3.2.0 では日々ユーザーの皆様からいただくご意見をもとに、いくつか現状の機能の改善を予定しています。

一覧系管理画面の改善

開発・運用でよく使用する一覧系管理画面について、よりリッチなUIで操作できるような改善を予定しております。

現状の問題点

  • 操作数が多い
  • ボタンが多くわかりずらい
  • 一覧から詳細に移動したあと、元に戻ると絞り込みが外れてしまう
  • 検索しずらい

対応予定ページ

  • モジュール一覧
  • エントリー一覧
  • カテゴリー一覧

カスタムユニットのデータがシリアライズされていてる問題の修正

現状カスタムユニットのデータをシリアライズして保存しているため「一括テキスト置換」に対応できていないなどの弊害があります。 これを通常のカスタムフィールドと同じ形式で保存するようにし、一括でテキスト置換ができるよう改善いたします。

WebPアップロード対応

現状は、次世代画像フォーマットの「WebP」画像の生成には対応していますが、「WebP」画像のアップロードには対応していません。 昨今「WebP」の普及からブラウザから画像をダウンロードすると「WebP」画像になっていてアップロードできないということも増えてきたため「WebP」画像のアップロードに対応したいと思います。

その他の機能改善

  • カスタムフィールドメーカー出力でtable以外のスタイル対応
  • 利用頻度の低いモジュールの非推奨化
  • コンバーターの拡張機能の追加
  • 会員一覧に最終セッション時間を表示できるように改善

リリース時期

2024年秋・冬にベータ版を用意、2025年初頭にはリリースしたいと考えております。

まとめ

次期マイナーバージョンである、a-blog cms Ver. 3.2.0 で予定している機能追加や機能改善についての情報をお届けいたしました。ユーザーの皆様に喜んでいただける CMS を目指して企画・開発を続けてまいりますので楽しみに待っていただけると幸いです。

ご意見・ご要望は Discordコミュニティ公式ツイッター からお気軽にご連絡ください!
引き続き a-blog cms をよろしくお願いいたします!

WebP画像対応

Ver. 2.11.22 より、次世代画像フォーマットである「WebP」画像の生成に対応しました。ここでは、WebP画像の利用条件、使用方法について説明します。

対応ブラウザ

  • Chrome
  • FireFox
  • ChroniumベースのEdge
  • Safari(iOS含む) 14 以降
  • https://caniuse.com/#search=webp

利用してるサーバーで WebP画像が生成できるか調査する

以下のような info.php を起き、phpの情報をみて、GDImagick の項目で、WebPフォーマットが入っていれば利用可能です。

<?php
  phpinfo();

GDでWebPが使えるか確認

GDでWebPが使えるか確認

ImagickでWebPが使えるか確認

ImagickでWebPが使えるか確認

設定方法

config.system.yaml の確認

config.system.yaml で webp_support が off (default: on)になっていないか確認します。

WebP画像生成確認

カスタムフィールド やユニット、メディアに画像を登録し、 同じファイル名.webp という WebP画像が生成されることを確認します。


ファイル名.webp という画像が生成できているか確認

ファイル名.webp という画像が生成できているか確認


.htaccess

WebP画像は対応していないブラウザもあるため、.htaccessで対応ブラウザだけにWebP画像を返すようにします。

# webpフォーマット画像対応
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_FILENAME} (.*)\.(jpe?g|png)$
RewriteCond %{REQUEST_FILENAME}\.webp -f
RewriteCond %{QUERY_STRING} !type=original
RewriteRule (.+)\.(jpe?g|png)$ %{REQUEST_FILENAME}.webp [T=image/webp,E=accept:1]
Header append Vary Accept env=REDIRECT_accept
AddType image/webp .webp
Header append Vary Accept env=REDIRECT_accept 
この行はCDNなどによるキャッシュを行う場合、必ず指定してください。指定しないと、対応していないブラウザでもWebP画像が帰ってしまったりします。

WebP画像を使うことによって、画像の容量を大幅に減らすことができます。是非サーバーが対応している場合は、積極的に利用してみましょう。