Не понимаю, почему hook_theme (), похоже, ничего не делает - PullRequest
0 голосов
/ 12 февраля 2012

Я использую Drupal 7 и создал пользовательский модуль с именем fb. В файле fb.module у меня есть следующее:

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) ничего не дает. Я ожидаю, что он будет содержать содержимое файла fb.tpl.php или, возможно, массив, который содержит содержимое этого файла в качестве значения одного из его параметров. Почему не так?

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

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

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

И выведите это так:

drupal_render($output);

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

0 голосов
/ 13 февраля 2012

Вы используете синтаксис 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

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

...