PHPTemplate テンプレートファイル
PHPTemplate エンジンを利用した Drupal テーマの構成は以下の通りです。
日本語での使用を前提とした foo テーマを新規作成する場合に必要だと思われるものを記載しています。
- foo/style.css --- *必須* デフォルトで読み込まれるスタイルシートです。
- foo/page.tpl.php --- *必須*
theme('page')で呼び出されるページ全体のテンプレートです。 - foo/node.tpl.php ---
theme('node')で呼び出されるコンテンツ部分のテンプレートです。 - foo/comment.tpl.php ---
theme('comment')で呼び出されるコメント部分のテンプレートです。 - foo/block.tpl.php ---
theme('block')で呼び出されるブロックのテンプレートです。 - foo/box.tpl.php ---
theme('box')で呼び出されるメインエリアを構成するコンテナのテンプレートです。 - foo/template.php --- phptemplate.engine で定義された内容のオーバーライトや、新しい定義を追加する場合に必要です。
- foo/screenshot.png --- テーマのリストにスクリーンショットを表示する場合に必要です。ない場合は "スクリーンショットなし" と表示されます。
- foo/foo.info --- Drupal 6.x から必要になるファイルで、現在リリースされているテーマファイルにも同梱されている場合があります。
node.tpl.php, comment.tpl.php, block.tpl.php, box.tpl.php は、必須ではないですが、大抵のテーマでは、そのテーマに沿った内容を定義したものが使用されています。
また、モジュールから theme('box') などを使用してレイアウトが呼び出されている場合がありますので、詳細なレイアウトを行う場合は、それぞれのテンプレートが必要になってくると思います。
これらのファイルが用意されていない場合は、themes/engines/phptemplate/ ディレクトリ内のそれぞれのテンプレートが使用されます。
この他、favicon.ico や logo.png などの画像ファイルなど、別途、必要になるものがあれば、ディレクトリ内に追加できます。
それぞれのファイルは、通常、foo/photo.jpg や foo/img/photo.jpg などの foo ディレクトリ以下に保存します。
style.css
テーマのスタイルを定義するためのスタイルシートです。一般的な CSS ファイルです。
モジュールなどで使用される CSS が読み込まれた後、最後に呼び出されるので、他で定義されたスタイルをオーバーライトできます。
サンプルコードの一部
/**
* Generic elements
*/
body {
margin: 0;
padding: 0;
background: #edf5fa;
font: 12px/170% Verdana;
color: #494949;
}page.tpl.php
(X)HTML ファイルとして出力されるページ全体のレイアウトを記述します。
サンプルコード
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language ?>" lang="<?php print $language ?>">
<head>
<?php print $head ?>
<?php print $scripts ?>
<?php print $styles ?>
<title><?php print $head_title ?></title>
</head>
<body>
<div id="wrapper">
<div id="header">
<?php print $search_box ?>
<?php print $header; ?>
<h1><a href="<?php print $base_path; ?>"><?php print $site_name; ?></a></h1>
<div><?php print $site_slogan; ?></div>
<div><?php print theme('links', $primary_links); ?></div>
<div><?php print theme('links', $secondary_links); ?></div>
</div>
<div id="content-wrapper">
<div id="content">
<div id="main">
<?php print $breadcrumb; ?>
<div><?php print $mission; ?></div>
<div><?php print $mission; ?></div>
<h1><?php print $title; ?></h1>
<div><?php print $tabs; ?></div>
<?php print $help; ?>
<?php print $messages; ?>
<?php print $content; ?>
<?php print $feed_icons; ?>
</div>
<div id="sidebar-left">
<?php print $sidebar_left; ?>
</div>
</div>
<div id="sidebar-right">
<?php print $sidebar_right; ?>
</div>
</div>
<div id="footer">
<?php print $footer_message; ?>
</div>
</div>
<?php print $closure; ?>
</body>
</html>template.php
template.php ファイルは <?php で書き始めますが、PHP の終了タグである ?> はCoding standards に従って省略します。
また、CVS にファイルをコミットする場合は、リビジョン番号や日付の経過を追跡できるように /* $Id$ */ を明記しておきます。
サンプルコードの一部(ブロックの表示領域の設定とパンくずリストの定義のオーバーライト)
<?php
/* $Id$ */
/**
* Declare the available regions implemented by this engine.
*
* @return
* An array of regions. The first array element will be used as the default region for themes.
* Each array element takes the format: variable_name => t('human readable name')
*/
function foo_regions() {
return array(
'left' => t('left sidebar'),
'right' => t('right sidebar'),
'header' => t('header'),
'footer' => t('footer')
);
}
/**
* Return a themed breadcrumb trail.
*
* @param $breadcrumb
* An array containing the breadcrumb links.
* @return a string containing the breadcrumb output.
*/
function zen_breadcrumb($breadcrumb) {
if (!empty($breadcrumb)) {
return '<div class="breadcrumb">'. implode(' :: ', $breadcrumb) .'</div>';
}
}変更履歴
[2007-06-16]
テーマのスクリーンショットやその他の画像ファイルなどの取り扱いについて追記しました。
トラックバック
トラックバックは承認後に表示されます。
URLから "-nospam" を削除してトラックバックを送信してください。
コメント
さりげなく・・・
2007-07-17(火) 15:19 - amayadori@drupa...は
template.php ファイルの文末の ?> はCoding standards に従って省略します。
ですかね?違ったらごめんなさい<(_ _)>
ありがとうございます。
2007-07-17(火) 15:38 - 0829いつもいつも本当にありがとうございます。 早速修正させていただきました。
エンティティ変換していなかったので、<?php から ?> までの内容がすっぽり抜けていたみたいです。
正確には、以下の内容を記述していました。