Drupalの5.x用のテーマを6.x用に更新する場合について実例を使用しつつ主要なポイントを説明します。ここでは6.xでテーマに新たに導入された新機能については省き、既存の5.xテーマを6.x対応にすることに焦点をあてます。
尚、この記事はdrupal.orgの以下の記事をベースにしています。
Converting 5.x themes to 6.x
http://drupal.org/node/132442
概要としては、CSSスタイルシートは特に変更しなくてもまず大丈夫だと思います。変更するべきファイルは、page.tpl.php、comment.tpl.phpです。(template.phpを使用しているテーマの場合はこれも変更する必要があるかと思います)更に.infoファイルのような新しいファイルが必要になります。
尚、以下の実例に含まれる<div>などのHTMLタグはお使いのテーマに合わせて適当に変更してください。あくまで参考として出しているだけですのでそのままコピペで使わないようにしてください。
1.Infoファイルの作成
Drupal 6.x以降、テーマも.infoファイルが必要になります。以下は当サイトで配布しているテーマでの例です。- name = Twilight
- description = Multi column, liquid/fixed layout recolorable theme
- version = VERSION
- core = 6.x
- engine = phptemplate
- stylesheets[all][] = style.css
- stylesheets[print][] = print.css
テーマ用.infoファイルの詳細については以下の記事を参照ください。
Writing .info files for themes - http://drupal.org/node/171205
2. comment.tpl.phpの修正
comment.tpl.phpの修正箇所は以下の1カ所だけです。署名がコメントから独立して$signatureという変数になりましたので、これを表示する部分をコメントの中身の表示の後に追加します。変更前
3. page.tpl.phpの修正
まず、先頭のhtmlタグで使用されていた$languageも変数からオブジェクトに変更になったため以下の変更が必要になります。変更前
- <html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print $language ?>" xml:lang="<?php print $language ?>">;
- <html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print $language->language ?>" xml:lang="<?php print $language->language ?>">
$layout変数を使用している場合には、$body_classes変数に置き換えることで、更に詳しい情報を得ることができるようになります。従来の$layoutをそのまま使用することもできますので、これは必須な変更ではありません。
$layoutと$body_classesの詳細については以下の記事を参照ください。
http://drupal.org/node/171906
$sidebar_left、$sidebar_rightといったリージョン名がデフォルトで$left、$rightに変更になりました。
変更前
- if ($sidebar_left) {
- }
- if ($left) {
- }
$sidebar_rightについても、上記と同様に$rightとなります。
また、$footer_messageが $footer_message と $footer に分割されたので、その対応が必要になります。
変更前
4. その他
これ以外には、template.phpを使っているテーマの場合には、_phptemplate_callback()や_phptemplate_variables()が使えなくなるなど6.xでの仕様変更に合わせた変更が必要になってきますが、ここでの説明は省略いたします。CSS(style.css)は基本的に何も変更しないでOKですが、ページャ(Pager)など一部のタグ出力が変わっていますので、現在使用しているstyle.cssの記述によってはそれに合わせて変更する必要があるかもしれません。

