2012-02-12 6 views
0

Я использую Drupal 7 и создал пользовательский модуль с именем fb. В файле fb.module, у меня есть следующие:Не понимаю, почему hook_theme(), кажется, ничего не делает

function fb_theme($existing, $type, $theme, $path) { 
    return array(
    'fb' => array(
     'template' => 'fb' 
    ) 
); 
} 

В том же каталоге, что и файл модуля (корень модуля), у меня есть файл с именем fb.tpl.php, который содержит:

fb.tpl.php is working! 

Для целей тестирования , html.tpl.php файла моей темы называет следующую в теле:

<?php 
$ouput = theme('fb'); 
print_r($output); 
?> 

Однако print_r($output) линия не производит nything. Я ожидаю, что он будет содержать содержимое файла fb.tpl.php или, возможно, массив, содержащий содержимое этого файла в качестве значения для одного из его параметров. Почему не так?

ответ

1

Вам не нужно использовать функцию темы вообще в Drupal 7. Вместо этого создайте визуализируемый массив так:

$output = array(
    '#theme' => 'fb' 
); 

и выходной сигнал, как это:

drupal_render($output); 

Это будет самым простым способом вывода его в файл html.tpl.php.

-1

Вы используете синтаксис drupal 6. Синтаксис D7 выглядит следующим образом:

function fb_theme($existing, $type, $theme, $path) { 
    return array(
    'fb' => array(
     'file' => 'fb' 
    ) 
); 
} 

Смотрите полную документацию здесь: http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_theme/7

[править] - также не забудьте очистить кэш темы после внесения изменений в теме крючки, в противном случае вы не видите перемены.

+0

Его синтаксис верен. ключ «файл» указывает файл, в котором реализована функция, а не файл шаблона, который реализует тема. ключ «шаблон» является правильным, чтобы использовать в этом случае сигнал Drupal, какой файл tpl.php он должен использовать. – KerrM