Drupal 5.xのテーマを6.x用に変更

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

この中で必須なキーは、namecoreの2つです。nameはテーマの名称、descriptionはテーマリストで表示されるテーマの説明、coreはテーマの対応しているDrupal Coreのバージョンになります。このcoreキーの値が使用しているDrupal Coreのバージョンと合わない場合にはそのテーマは無効になり、テーマ一覧にも表示されません。

テーマ用.infoファイルの詳細については以下の記事を参照ください。
Writing .info files for themes - http://drupal.org/node/171205
2. comment.tpl.phpの修正
comment.tpl.phpの修正箇所は以下の1カ所だけです。署名がコメントから独立して$signatureという変数になりましたので、これを表示する部分をコメントの中身の表示の後に追加します。

変更前
<div class="content"><?php print $content; ?></div>

変更後
<div class="content"><?php print $content; ?></div>
<?php if($signature) { ?>
  <div class="clear-block">
  <?php print $signature; ?>
  </div>
<?php } ?>

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に変更になりました。

変更前
<?php if ($sidebar_left) { ?>
    <?php print $sidebar_left ?>
<?php } ?>

変更後
<?php if ($left) { ?>
    <?php print $left ?>
<?php } ?>

$sidebar_rightについても、上記と同様に$rightとなります。

また、$footer_messageが $footer_message と $footer に分割されたので、その対応が必要になります。

変更前
<?php print $footer_message; ?>
変更後
<?php print $footer_message . $footer; ?>

4. その他
これ以外には、template.phpを使っているテーマの場合には、_phptemplate_callback()や_phptemplate_variables()が使えなくなるなど6.xでの仕様変更に合わせた変更が必要になってきますが、ここでの説明は省略いたします。

CSS(style.css)は基本的に何も変更しないでOKですが、ページャ(Pager)など一部のタグ出力が変わっていますので、現在使用しているstyle.cssの記述によってはそれに合わせて変更する必要があるかもしれません。

新しいコメントの投稿

このフィールドの内容は非公開にされ、公表されることはありません。
  • 使用できるHTMLタグ: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • 行と段落は自動的に折り返されます。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。

書式オプションに関するより詳しい情報...

CAPTCHA
この質問はスパムを防止するために貴方が人間か自動スパム送信プログラムかを判断するためのものです
3 + 1 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.