Developテーマの使い方


Develop テーマとは、フロントエンドの開発環境が整備された a-blog cms の公式テーマです。

Develop テーマは a-blog cms を開発する際によく使うテンプレートをシンプルにしたものが同梱されており、独自のデザイン・レイアウトでテーマ開発する場合に最適なテーマです。

また、テンプレートは a-blog cms Ver. 3.2 から導入された Twig テンプレートを利用して記述されており、より保守性・再利用性に優れたテーマを開発することができます。


ツールについて

Develop テーマでは次のようなツールを導入してしています。

  • Tailwind CSS (ユーティリティファーストCSSフレームワーク)

  • Alpine.js (HTMLに直接振る舞いを記述できるようにするJavaScriptフレームワーク)

  • htmx (HTML の属性だけで Ajax や部分更新、履歴管理といった高度なインタラクションを実現できる軽量な JavaScript ライブラリ)

  • Vite (高速なフロントエンドビルドツール)

また、これらを快適に使用できるように、 EditorConfigESLintPrettierStylelint の設定が組み込まれています。

バンドル環境の使い方

ンストール

themes/develop/ に移動して、下記のコマンドを実行します。実行することでビルドに必要なツールなどがインストールされます。

$ npm install

npm コマンド自体が存在しない場合、Node.js をインストールすることで npm コマンドが有効になります。Node.js はこちらのサイトからインストールできます。

ビルドコマンド

本番用ビルド

cssのbuildとjsのbuildを行います。 納品時にはこのコマンドを実行して納品してください。 JavaScriptが productionビルド となります。

$ npm run build

また、本番ビルドしたCSSとJavaScriptを利用する場合は a-blog cms 設置ディレクトリの .env ファイルで、VITE_ENVIRONMENT に production を指定します。

# Vite
VITE_ENVIRONMENT=production # development | production

開発用ビルド

以下のコマンドを実行すると、cssとjsの変更をwatchしてビルドを行います。余分なコードが入ったり、最適化されないため納品時には必ず npm run build しましょう。

$ npm run dev

また、開発用にビルドしたCSSとJavaScriptを利用する場合は a-blog cms 設置ディレクトリの .env ファイルで、VITE_ENVIRONMENT に development を指定します。

# Vite
VITE_ENVIRONMENT=development # development | production

Vite 連携について詳しくはドキュメントを御覧ください。

組み込みJSの読み込みについて

JavaScriptは、include/head/js.twig で読んでいます。 Develop テーマではパフォーマンス向上のために、Touch_SessionWithContributionを使って、投稿者以上以上の場合だけ読み込むようにしています。

{% if touch('Touch_SessionWithContribution') %}
<script src="{{ JS_LIB_JQUERY_DIR }}jquery-{{JS_LIB_JQUERY_DIR_VERSION}}.min.js" charset="UTF-8"></script>
<script src="{{ ROOT_DIR }}acms.js{{ js.arguments }}" charset="UTF-8" id="acms-js"></script>
{% endif %}

組み込みJSを読まないようにすると、スライダーや、画像ビューワーなどの組み込みJSが動作しなくなりますが、一部のよく利用する組み込みJSをsrc/js/lib/buildIn/に実装し、src/js/main.jsで読み込んでいます。

import {
  // 組み込みJS
} from './lib/buildIn/';

これ以外に必要な機能やライブラリは、自分でインストール、実装する必要があります。 バンドル環境が整っていますので、 npm経由でライブラリをもってきて、 importする方式をお勧めします。以下 lazy load を実装する例になります。

$ npm i vanilla-lazyload
import LazyLoad from 'vanilla-lazyload';

domContentLoaded(() => {
  new LazyLoad({elements_selector: '.js-lazy-load'});
});