Please Sign In or Register

テーマの概観

Drupal では、テーマエンジンによって出力する内容を定義し、テーマエンジンで定義された内容を出力する場所をテンプレートで指定するという方法がとられています。

5.x のデフォルトのテーマエンジンには PHPTemplate が利用されていますが、他にも PHPTAL theme engine, Smarty theme engine, wgSmarty theme engine, XTemplate, Zengine などのテーマエンジンがあり、それぞれにテンプレートへの記述方法が異なります。
このうち、Drupal 5.x に対応したエンジンとしてリリースされているものは PHPTemplate および PHPTAL theme engine, Zengine の 3種類のみで、Smarty theme engine についてはパッチが公開されていますが、公式リリースはされていないようです。

また、PHPTemplate エンジンをベースに、エンジンで定義されている内容も合わせてテンプレートに記述することで、プレーン PHP テンプレートとなる .theme ファイルを作成できます。
Drupal では、最初に .theme ファイルを検索し、なければ .engine ファイルを探すように設計されています。

テーマエンジンの構成ファイル

それぞれのテーマエンジンとその構成ファイルは以下の通りです。

テーマエンジン エンジン 定義のオーバーライト用テンプレート 各表示部分用テンプレート スタイルシート 参考テーマ
PHPTemplate phptemplate.engine template.php .tpl.php style.css garland, bluemarine, Zen
PHPTAL phptal.engine template.php .tal style.css Zental
Smarty smarty.engine smartytemplate.php .tpl style.css Smarty port of the Garland theme, Bluemarine_smarty
wgSmarty wgSmarty.engine class_wgSmarty.php .tpl style.css wgBluemarine theme
XTemplate xtemplate.engine xtemplate.inc .xtmpl style.css Drupal 4.6x 以下の bluemarine
Zengine zengine.engine .zen.php style.css ZenZen
プレーン PHP .theme style.css chameleon

テーマテンプレートへの入力書式

また、それぞれのエンジンを利用した場合のテンプレートでの基本的な記述方法は以下の通りです。(一部分です。)
(X)HTML ベースという部分はどれも同じですが、変数の呼び出し方法などが異なっています。
Garland, Zen, Bluemarine などのテーマは、それぞれのエンジンに対応したものがリリースされていますので、それらを比較することで詳細を確認できます。

テーマエンジン テンプレートへの入力書式(コード)
PHPTemplate
<?php if ($site_name): ?>
  <h1><a href="<?php print $base_path; ?>"><?php print $site_name; ?></a></h1>
<?php endif; ?>
PHPTAL
<h1 tal:condition="php:!empty(site_name)">
  <a tal:attributes="href base_path" tal:content="site_name" />
</h1>
Smarty
{if isset($site_name)}
  <h1><a href="./">{$site_name}</a></h1>
{/if}
wgSmarty
{if $site_name}
  <h1><a href="./">{$site_name}</a></h1>
{/if}
XTemplate
<h1><a href="./"{site_name}</a></h1>
Zengine
<?php if (!empty($site_name)): ?>
  <h1><a href="<?php print $base_path; ?>"><?php print $site_name; ?></a></h1>
<?php endif; ?>
プレーン PHP PHPTemplate ベースの書式で記述します。

このサイトでは、Drupal 5.x に標準で搭載されている PHPTemplate を使用したテーマの作成方法を紹介します。

トラックバック

トラックバックは承認後に表示されます。

URLから "-nospam" を削除してトラックバックを送信してください。