モジュール(もしくはテーマ)のテーマの実装をレジストリに登録します。
このフックの実装は2つの目的のために使用されます。ひとつはそのレンダリング配列がどのように HTML としてレンダリングされるかを特定すること(通常テーマ関数の指定はレンダリング配列の #theme プロパティを使います)、もうひとつは theme() をコールして生成された HTML を返すことです。
以下に示すパラメータはすべてオプションです。
array $existing オーバーライドの目的で使用される既存の実装の配列です。主にテーマが自身の優先度の高いテーマ実装を適切に登録するときなどに、既存のテーマ実装を調べ、引数などのデータを抽出するのに有用です。
$type Whether a theme, module, etc. is being processed. This is primarily useful so that themes tell if they are the actual theme being called or a parent theme. May be one of:
$theme The actual name of theme, module, etc. that is being being processed.
$path The directory path of the theme or module, so that it doesn't need to be looked up.
テーマフックの情報の連想配列を返します。配列のキーはフックの内部名、値はそのフックの情報を含む配列となっています。値の配列はそれぞれ 'variables' か 'render element' のどちらかの要素をもつ必要があります(両方を含めることはできません)。単一の要素、もしくはフォーム、ページ構成の配列といった複数の要素で構成されるツリー、もしくは単一チェックボックス要素などのテーマには 'render element' を使います。いっぽうそのテーマ実装が theme() を通して直接コールされることを意図していて、複数の変数を必要とする場合は、'variables' を使用してください。その場合、テーマをコールする際に指定されていない変数は、ここでデフォルトとして設定したものがテーマ関数(もしくはテンプレートファイル)に渡されます。テーマ情報の配列は次のようなキー/値のペアとなります。
<?php theme(array('forum__' . $tid, 'forum'), $forum) ?>
Code modules/system/system.api.php, line 2142
<?php function hook_theme($existing, $type, $theme, $path) { return array( 'forum_display' => array( 'variables' => array('forums' => NULL, 'topics' => NULL, 'parents' => NULL, 'tid' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL), ), 'forum_list' => array( 'variables' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL), ), 'forum_topic_list' => array( 'variables' => array('tid' => NULL, 'topics' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL), ), 'forum_icon' => array( 'variables' => array('new_posts' => NULL, 'num_posts' => 0, 'comment_mode' => 0, 'sticky' => 0), ), 'status_report' => array( 'render element' => 'requirements', 'file' => 'system.admin.inc', ), 'system_date_time_settings' => array( 'render element' => 'form', 'file' => 'system.admin.inc', ), ); } ?>