このページは、concrete5スイスのRemo氏によるチュートリアルを翻訳したものです。文章は一部修正してあります。原文はこちらです。Thanks Remo!
concrete5 Tutorial 1 From codeblog
目次 (クリックすると該当記事へジャンプします。)
1. テーマの構成要素
2. レイアウト構造
4. ヘッダーとフッター要素
5. サムネイルと説明書き
6. インストール
7. クイック リファレンス
このチュートリアルでは、既に制作した HTML 、 CSS のテンプレートを concrete5 のテーマに変換するためのやり方を紹介します。
前提として、 HTML と CSS の基礎知識が必要です。しかし PHP のコードは全て解説しますので PHP の経験は必要ありません。
このチュートリアルでは、以下のサンプルファイルを使いますので、ダウンロードしてお使い下さい。また、このページの最後では、完成版のダウンロードもすることができます。

次に、 HTML/CSS でつくったこのレイアウトファイルを、 concrete5 用テーマに変換するポイントを追って行きます。
オリジナルなレイアウトを実現するためには、concrete5のテーマの仕組みを理解することが必要です。
そこで最初に、テーマを構成する全要素を概観してみます。
すべてのファイルの文字エンコーディングをUTF-8に設定して下さい。そうでないと文字化けの原因となります。

*全てのテキストファイルの文字エンコーディングは、「UTF-8」に設定する必要があります
テーマは、以下の様なフォルダーを作成し、 その配下にファイルを保存します。フォルダー名は、半角英小文字数字のみで空白は認められません。
/themes/[テーマハンドル]/
その他にも、マーケットプレイスでは、パッケージ作成の手順を踏んでいただく必要がありますが、テーマ関連ファイルは以下のフォルダー内に・・・
/packages/[パッケージハンドル]/themes/[テーマハンドル]/
concrete5 デフォルトのテーマは、以下のフォルダー内に・・・
/concrete/themes/[テーマハンドル]/
というフォルダー内にファイルが保存されています。
以下のファイルを制作すると、デフォルトのページタイプと連動します。このチュートリアルでは紹介しませんが、以下と同名のファイルを作成すると、デフォルトのテーマに保存されているページタイプを適用出来るようになります。
また、ページタイプのハンドルと同じファイルを作成すると、そのファイルが適用される様になります。
concrete5 では、以下のディレクトリーを作成する必要はありませんし、別の名前でディレクトリーを作成されても構いませんが、今回は、 concrete5 で最も一般的に行われている方法を元に紹介して行きます。
テーマを構成するこれらのファイルは全てまとめて1つのディレクトリに保存します。
これらのファイルをを所定の位置(/themes/[テーマハンドル]/)にコピーして、管理画面でインストールするだけで、テーマをインストールすることができます。
(*ただし本家のマーケットプレイスからダウンロードしたテーマは「/packages」のディレクトリーに配置します)
最初に示したレイアウト例を、もう一度見てみましょう。

当チュートリアルは、このレイアウト例を使って進めていきます。
::::::::::::::::::::::::::::::::::::::::::
さて、このレイアウトは、1.「ロゴ」と、2.「画像」と、3.「メニュー」部分と「文章」部分とに分かれたコンテンツ、という3つの部分で構成されています。

HTMLの構造は以下のようになっています。

これを基に、concrete5で編集可能な、【3.1】に「オートナビブロック」と、【3.2】に「コンテンツブロック」を追加できるようにしたいと思います。
次のステップでは、そのためのPHPコードをこのHTMLコードに挿入してみましょう。
まず、「images」「elements」ディレクトリーを作成。そして、画像ファイルを「images」ディレクトリーに移動させます。
まず最初に、「main.css」ファイルを作成します。
今回は、main.cssに全てのルールを記述します。「layout.html」のヘッダータグにあるCSSの記述を全てコピー&ペーストして「main.css」という名前で新規作成して下さい。
concrete5 テーマ用に、全ての画像を「images」フォルダーに保存したので、cssの定義を最初のものから二か所修正します。「background.png」を「images/background.png」に、「picture.jpg」を「images/picture.jpg」にします。これで、main.cssの作成は終わりです。
*「typography.css」は、ページ下のダウンロードパッケージに concrete5 デフォルトの「typography.css」を同梱しました。詳しくは今後、別チュートリアルで説明する予定です。(英語チュートリアルはこちら)
*背景色が黒色なテーマは「typography.css」でも、ページの背景色を指定する必要があります。
では、実際のテーマテンプレートを、default.phpというファイル名でつくって行きます。中身は、オリジナルのhtmlとほとんど変わりません。
<?php
defined('C5_EXECUTE') or die(_("Access Denied."));
$this->inc('elements/header.php');
?>
<div id="outercontainer1">
<div id="outercontainer2">
<div id="container">
<div id="logo">
<img src="<?php echo $this->getThemePath()?>/images/logo.png" alt="Logo"/>
</div>
<div id="picture">
</div>
<div id="content">
<div id="column_1">
</div>
<div id="column_2">
<?php
$a = new Area('Header Nav');
$a->display($c);
?>
</div>
<div id="column_3">
<?php
$a = new Area('Main');
$a->display($c);
?>
</div>
<div style="clear:both;"></div>
</div>
</div>
</div>
</div>
<?php
$this->inc('elements/footer.php');
?>
まず、一番最初の4行に、以下の記述をします。
<?php
defined('C5_EXECUTE') or die(_("Access Denied."));
$this->inc('elements/header.php');
?>
・1行目に、PHPの書式が始まるという呪文を記述します。
・2行目は、concrete5 のプログラムでないと、ファイルを直接開けないようにするための呪文みたいなものです。
・3行目は「elements/header.php」のファイルをここに含めるという命令で、ヘッダーをもたせるためのものです。ヘッダーについては後で詳しく説明します。
・4行目に、 PHP の命令文が終わり、普通の HTML に戻るという記述を加えます
6~40行目でレイアイトの指定をしています。
普通の HTML の構造にどのサイトにインストールされても、ファイルの保存先がきちんと反映されるようにPHP命令文を加えて行きます。
このテンプレートでは、11行目に画像が1つだけ使われているので、そこに PHP 命令文を記述します。
<img src="<?php echo $this->getThemePath()?>/images/logo.png" alt="Logo"/>
上記のように、
<?php echo $this->getThemePath()?>
という命令文を加えます。これは、テーマが保存されているパスをそこに挿入するという命令です。つまり、この他にも画像やファイルを読み込ませたいと思われている方は、URLの部分に上記の命令を加えることになります。
22~25行目で、 concrete5 が編集出来るエリアを指定します。まず最初は「header nav」エリアです。
編集可能エリア(ブロック挿入可能部)を定義したphpコードです。
<div id="column_2">
<?php
$a = new Area('Header Nav');
$a->display($c);
?>
</div>
「column-2」というCSSのIDの中に「header nav」エリアのコンテンツを表示させるという指定をしています。
29~32行目は、コンテンツを挿入するための2つ目のエリアです。
<div id="column_3">
<?php
$a = new Area('Main');
$a->display($c);
?>
</div>
42~44行目で後述の「elements/footer.php」を読み込むという命令文を加えます。
<?php $this->inc('elements/footer.php'); ?>
今回のチュートリアルでは、詳しい説明は省きますが、「view.php」では、普通のテンプレートではなく、「シングルページ」や将来公開される大掛かりなアプリケーションを表示させる時に使用するテンプレートです。ですので、エリアを指定するのではなく、メインコンテンツを表示させる場所に以下の命令文を記述します。
<?php
print $innerContent;
?>
このコードは、5.3.0 以降でサポートされている「公開プロフィール」や、大掛かりなアプリケーションのコンテンツを表示させる所を指定するコードです。今回は詳しい説明を省かせていただきました。ページ下の完成版に「view.php」を同梱しました。
また、普通にエリアを含める事も可能です。今回のパッケージでの「view.php」には、【3.1】の「Header Nav」というエリアを残し、【3.2】の「Main」エリア部分を、このシングルページ用に当てはめる事にします。
普通、どのウェブサイトでも、ヘッダーの部分とフッターの部分は同じような表示をします。ですので、今回は、「elements」ディレクトリー内に、「header.php」と「footer.php」テキストファイルを作成します。
「header.php」 ファイルには、concrete5の特別な説明書きを含める必要があります。今回はコピー&ペーストのみで大丈夫です。
<?php defined('C5_EXECUTE') or die(_("Access Denied.")); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html lang="ja">
<head>
<?php Loader::element('header_required'); ?>
<!-- Site Header Content //-->
<style type="text/css">@import "<?php echo $this->getStyleSheet('main.css')?>";
</style>
<style type="text/css">@import "<?php echo $this->getStyleSheet('typography.css')?>";
</style>
</head>
<body>
1行目の「defined('C5_EXECUTE') or die(_("Access Denied."));」も「default.php」と時と同じように、 concrete5 がアクセスした時のみ、このファイルが読み込まれるようにするための呪文です。
6行目の「Loader::element('header_required');」は、 concrete5 が使用する Javascript や CSS ファイル、セッション情報やその他の設定を読み込ませるための呪文です。
8〜9行目で、先ほど作成した2つのCSSファイルを読み込ませる「echo $this->getStyleSheet('main.css')」「echo $this->getStyleSheet('typography.css')」という記述をしています。
「footer.php」も今回はコピー&ペーストのみで大丈夫です。
<?php
defined('C5_EXECUTE') or die(_("Access Denied."));
require(DIR_FILES_ELEMENTS_CORE . '/footer_required.php');
?>
</body>
</html>
3行目の「require(DIR_FILES_ELEMENTS_CORE . '/footer_required.php');」は、「管理画面」-「サイト全体の設定」にある、アクセス解析コード等を出力する指示をします。
これでもうほとんどの重要なファイル群は出来上がりました。後は、作成したテーマが concrete5 の管理画面で見栄え良く確認できるようにしてみましょう。
photoshop等でレイアウトを開き、120×90ピクセルで小さな画像を作成し、「thumbnail.png」というファイル名のPNG形式画像をフォルダーに保存します。この画像が管理画面で表示される画像になります。
![]()
また、「description.txt」(説明)と呼ばれるテキストファイルを作成します。最初の行にはテーマの名前を書き、2行目には解説を書きます。
Codeblog Theme
Codeblog Theme by mesch.ch, Remo laubacher
これで必要なファイルは全て作成しました。さあ、作成したテーマをインストールしてみましょう。
concrete5 をインストールしたディレクトリに「themes」というフォルダーがあるので、フォルダーを丸ごとアップロードします。

そして、管理画面にログインして、「ページとテーマ」を開きます。

そして、「インストール」をクリックし、確認画面を待ちます。
もし新しいテーマを既定のテーマにしたい場合は、「有効」をクリックしてください。すると全てのページがこの新しいテーマにセットされます。
これが、今回のチュートリアルで紹介したテンプレート変換後のファイルです。
上記の PHP 命令文の他に、知っておきたいコードを並べておきます。
concrete5 のデフォルトのテンプレート「プレーンヨーグルト」には、
というエリアが指定してあります。これらのエリアをテンプレートに入れずに独自のネーミングをされても構いません。ただし、他のテンプレートとの互換性がなくなり、テーマを変えたとたんに、ブロックがページから消えてしまいますので、これらを優先的に使用される事をお勧めします。
ということで、上のチュートリアルでは、「Header Nav」と「Main」のエリアを作成しましたが、「Header」と「Sidebar」のエリアを作りたい場合は・・・。
Header エリア
<?php
$a = new Area('Header');
$a->display($c);
?>
<?php
$a = new Area('Sidebar');
$a->display($c);
?>
を、レイアウトの該当箇所に挿入して下さい。
Usagi Project では、当サイトでテンプレートを公開出来る場所や、本家のマーケットプレイスへテンプレートを公開する代行もしようと考えています。ご自慢のテンプレートを公開されたい場合は、お気軽に、Usagi Projectまでお知らせ下さい。