テンプレートとテーマエンジン

まず最初に、concrete5にはテンプレートエンジンやテーマコンパイラーが存在しないことにお気づきだと思います。ブロックを表示するロジックは表から隠されていますので、デザイナーや開発者が独自のサイトのデザインを実現するのにあたり、新たに学ぶことは少なくなるようになっています。このセクションではconcrete5のテーマの全ての要素をそれらがページを出力するのに及ぼす働きを解説します。

テーマの位置

テーマはconcrete5サイトの複数の位置に存在します。

デフォルトテーマ
concrete5にはいくつか標準でインストールされたテーマが存在し、ルート/concrete/themes に格納されています(そのなかには core/ という名前のディレクトリもありますが、これはconcrete5の管理画面に適用される特殊なテーマですので、このページでは説明を省きます)。

あなたが作成したカスタムテーマ
自分で作成するテーマはオーバーライドディレクトリ ルート/themes/テーマ名 に格納します。

マーケットプレイスからダウンロードしたテーマ
concrete5.orgのマーケットプレイスから入手したテーマはパッケージ形式で提供されます。パッケージ化されたテーマは ルート/packages/パッケージ名/themeテーマ名 ディレクトリ以下に配置されます。

アドバイス: デフォルトのテーマやマーケットプレイスからダウンロードしたテーマを編集したい場合は、編集を行なう前にそのテーマを ルート/themes フォルダにコピーしてください。こうすることで、concrete5をバージョンアップしたり、マーケットプレイスのテーマをアップデートした際に、変更した内容が消えてしまうことを防げます。

テーマの中身

ページタイプ

ページタイプは、テーマにページの外観を変更する選択肢を提供します。ページタイプはページの「デザイン」リンクをクリックすることで切り替えることができます。左サイドバー(Left Sidebar)、全幅(Full)、ブログ記事(Blog Entry)などの名前のページタイプがあります。Greek Yogurtテーマの中身を見ると、それらのページタイプに対応するファイルがあることを確認できるでしょう。

default.php
left_sidebar.php
blog_entry.php
full.php

これらのファイルをテキストエディターで開いてみれば、特別なロジックや書式、ショートコードなどがない、HTMLとPHPでできたシンプルなファイルであることが分かると思います。

エリア

ページタイプの中に、次のコードスニペットを使ってconcrete5の編集可能なエリアを指定することができます。

$a = new Area('Sidebar');
$a->display($c);
?>

ページ上でこのコードが実行されるたびに、エリアを出力します。HTML上の静的なコンテンツ——テキスト、画像、その他concrete5のブロックで表現可能なあらゆるもの——を、このコードを使って編集可能にすることができます。

それぞれのエリアは一意な名前を持つ必要があります。そのため、もし上記のコードをもうひとつページ内に埋め込みたければ、「Sidebar」とは違う名前をつける必要があります。たとえば、「Another Sidebar」のように。

テーマ要素

ほとんどのサイトは、サイト内で共通している部分がありますので、部分的にコードを使い回すことは良い考えです。もっとも一般的な例としては、サイト全体で共通で表示されるヘッダーやフッターでしょう。concrete5のテーマでは、これらを要素(Elements)と呼びます。

一般的なテーマでは、ヘッダーやフッターといった要素をテーマのルートディレクトリ以下の elements/ という名前のサブディレクトリ内のファイルから読み込みます。これは最もよく使われている標準な方法ですが、必要であればテーマのルートディレクトリ以下に別のディレクトリ名を作成しても構いません。

では、concrete5でこれらの要素を読み込む方法を見てみましょう。テキストエディターでGreek Yogurtテーマ内のページタイプのファイルを開いてみてください。全てのファイルは次のヘッダー要素を読み込む記述で始まっています。

$this->inc('elements/header.php');

同様に、全てのファイルはフッター要素を読み込んで終わっています。

$this->inc('elements/footer.php');

このように、テーマ内で他の要素を読み込む方法がお分かりになったと思います。この方法をつかって、作成したサイドバーやその他の要素を何でも読み込むことができます。

特殊なページタイプ

すべてのconcrete5のテーマには次の2つのファイルが必要です。これらのファイルが無いと、テーマはインストールできません。イチからテーマを開発する際は、忘れずにこれらのファイルを作成してください。

default.php

concrete5のテーマからあなたの独自のページタイプを作成することができますが、concrete5の機能によってそれらのあまたのテーマで作成したページタイプを含まない別のテーマに切り替えることが可能です。そのような場合に、concrete5は default.php をページタイプ専用のファイルの代替(フォールバック)として使用します。

view.php

concrete5の「シングルページ」のコンセプトにまだ慣れていないかもしれませんが、シングルページはサイト内の特定のパスで一度限り現れる特殊なページと覚えておいてください。サイト内の特殊なページを表示するのに使われます。しかし、view.php は非常に重要なファイルできちんと動作するように作成する必要があります。

view.php は、他の通常のページタイプには見られないphpの特別なスニペットを持つことが特徴です。 通常のページタイプのヘッダーとフッターの読み込みの間に、view.php は次のコードを含める必要があります。

print $innerContent;

この行はシングルページのコンテンツを表示するのに必要です。

新しいページタイプを作成する

ページタイプのどれかが——たとえば左サイドバーが——我々のサイトにほとんど完璧に適合していて、しかしいくつかの変更を加える必要があったとします。この場合、left_sidebar.php ファイルを複製し、新しい名前をつけるのが良いでしょう——例えば、custom_sidebar.php のようにです。

さて、ファイルを複製し、新しい名前をつけたとしましょう。よろしい!あとひとつ、必要な作業があります。サイトにページタイプをインストールすることです。

管理画面にアクセスし、ページとテーマ > ページタイプ にアクセスしてください。「ページタイプ追加」ボタンをクリックしましょう。名前欄に「カスタムサイドバー」と入力します。ハンドル欄には、ページタイプのファイル名を入力してください。この場合は、custom_sidebar です。

「新規」ボタンをクリックして完了です。

原文:Template and Theme Engine