テンプレートの種類

a-blog cmsの管理ページから設定するテンプレートファイルは以下のの8種類になります。

  • トップページ
  • 一覧ページ
  • 詳細ページ
  • エラーページ(404 Not Found)
  • 管理ページ
  • エントリー編集ページ
  • ユニット追加ページ
  • 管理ログインページ

テンプレートファイルは、管理画面 > テーマ > テーマ設定の順に移動し、テンプレートファイルの項目で設定できます。

テーマセット機能は Ver. 3.1 から導入された機能のため、Ver. 3.0 以前のバージョンを利用の方は 管理ページ > コンフィグ > テーマ設定からテーマの変更ができます。


一般的な設定方法


トップページ

そのサイト(ブログ)のトップページにアクセスした際に適用されるテンプレートファイルです。一覧ページや詳細ページとは違い、URLコンテキストによる影響を受けることが少ないテンプレートです。

一覧ページ

カテゴリーのトップページで複数のエントリーを一覧表示する際に適用されるテンプレートファイルです。そのほかにも、カスタムフィールド・タグ・キーワードの検索結果と現在いるページを指定したときに使用されます。

ブログテーマのように、エントリー本文のモジュールを一覧ページに使用している場合、エントリー編集画面で設定できる『以下のユニットが一覧表示時に「続きを読む」になります』ブロックよりも上部のユニットまでが表示され、以下のユニットは詳細ページのみ表示されます。

詳細ページ

個別のエントリーや固定ページを表示する際に適用されるテンプレートファイルです。詳細ページ・エントリー編集ページ・ユニット追加ページのテンプレートは同じにしておくと、エントリーを書く際に詳細ページと同じ見た目でコンテンツを編集することができます。

エラーページ(404 Not Found)

存在しないURLにアクセスした際に適用されるテンプレートファイルです。カスタマイズ次第で、エントリーが存在しない場合に、検索やオススメのエントリーを表示することもできます。

管理ページ

管理ページを表示する際に適用されるテンプレートファイルです。管理ページ共通のテンプレートファイルになり、/themes/system/admin/ 以下のディレクトリおよびファイルがURLのパスに従って表示されています。

<section id="main" role="main">
    <!--#include file="/admin/%{ADMIN_PATH}.html"-->
</section><!-- /#main -->

エントリー編集ページ

エントリーを投稿・編集する際に適用されるテンプレートファイルです。詳細ページと同じテンプレートにしておくのが一般的です。

ユニット追加ページ

エントリーにユニットを追加する際に適用されるテンプレートファイルです。詳細ページと同じテンプレートにしておくのが一般的です。

管理ログインページ

管理者用ログインページに適用されるテンプレートファイルです。

同一テンプレートでのコンテンツの出し分け方法

トップページと一覧や詳細ページとで表示する内容を変えたい場合、テンプレートの設定で指定するテンプレートファイルを個別に設定する方法が一般的ですが、ちょっとした表示の違いで個別にテンプレートを用意するのは、テンプレートの修正が発生した際にメンテナンス性が下がります。そこでタッチモジュールやIFブロック、インクルードを使うことで同一のテンプレート内に表示の出し分けを行うことができます。

タッチモジュールの場合

<!-- BEGIN_MODULE Touch_Top -->トップページに表示<!-- END_MODULE Touch_Top -->
<!-- BEGIN_MODULE Touch_Index -->一覧ページに表示<!-- END_MODULE Touch_Index -->
<!-- BEGIN_MODULE Touch_Entry -->詳細ページに表示<!-- END_MODULE Touch_Entry -->

IFブロックの場合

<!-- BEGIN_IF [%{VIEW}/eq/top] -->トップページに表示
<!-- ELSE_IF [%{VIEW}/eq/index] -->一覧ページに表示
<!-- ELSE_IF [%{VIEW}/eq/entry] -->詳細ページに表示<!-- END_IF -->

テンプレートではIFブロックよりもモジュールの方が先に解決されます。このため、トップページはエントリーサマリー、詳細ページはエントリー本文などのモジュールの出し分けをIFブロックで行うと、モジュールの解決後にIFブロックで表示結果を消すことになり無駄な処理が動いてしまいます。モジュールの出し分けは、タッチモジュールやグローバル変数を使ったインクルードで行ってください。

インクルードの場合

top_parts.html・index_parts.html・entry_parts.html などのインクルードファイルを用意しておき、グローバル変数 %{VIEW} を使ってインクルード文を記述します。

<!--#include file="/include/%{VIEW}_parts.html" -->

Ver. 2.7.xを新規インストールした際に動作が遅くなる不具合が見つかりパッチがリリースされました


Ver. 2.7.0 〜 Ver. 2.7.15 を新規インストールした環境で、動作として問題があるということではありませんが、登録情報が多くなってくると動作が遅くなってしまう不具合が見つかりました。これまでのバージョンからのアップデートの場合には、この問題はありません。

詳しくは、修正パッチを公開ページ「 Ver. 2.7.x 系でデータベースのインデックスが張られない不具合が見つかりました 」をご覧ください。