Drupal 7 で theme.inc で発生する Fatal error の対処方法
Drupal 7 で次のようなエラーに遭遇することがあります。
Fatal error: Unsupported operand types in /PATH/TO/DRUPAL_ROOT/includes/theme.inc on line 637
原因
問題の原因は関数 _theme_process_registry()
の中で連想配列とその他の何か(たいてい NULL
)の加算が行なわれていることです。
そしてそれが起こるのは hook_theme()
の戻り値が正しく指定されていないことが原因です。
次のような hook_theme()
を書いていると発生します。
function mymodule_theme($existing, $type, $theme, $path) {
$themes = array(
'special_element' => array(
'variables' => array(
'something_special' => NULL,
),
),
);
);
対策
hook_theme()
の戻り値を正しく指定します。
上の例でいえば return $themes
を追加すれば OK です。
function mymodule_theme($existing, $type, $theme, $path) {
$themes = array(
'special_element' => array(
'variables' => array(
'something_special' => NULL,
),
),
);
return $themes;
);
私は return
をつい書き忘れて数ヶ月に一度は遭遇します。