Вам необходимо использовать атрибут "#theme", например, в следующем коде.
$build['dblog_table'] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#attributes' => array('id' => 'admin-dblog'),
'#empty' => t('No log messages available.'),
);
#theme
сообщает Drupal, какую функцию темы нужно вызвать; другие свойства, если они уже используются для других целей, используются в качестве имен переменных для передачи в функцию темы или в файл шаблона, если он используется.
В этом примере theme_table () получит следующий массив.
array(
'header' => $header,
'rows' => $rows,
'attributes' => array('id' => 'admin-dblog'),
'empty' => t('No log messages available.'),
);
Это может быть сделано даже с теми функциями темы, которые действительно используют файл шаблона.
Вы определяете функцию темы в вашей hook_theme () , используя необходимые ключи, используемые для функции темы, которая использует файл шаблона, например, в следующем коде.
function mymodule_theme($existing, $type, $theme, $path) {
return array(
'mymodule_sidebar' => array(
'variables' => array('topics' => NULL, 'parents' => NULL, 'tid' => NULL, 'sortby' => NULL),
'template' => 'mymodule-display',
),
);
}
Функция темы будет затем использоваться с чем-то похожим на следующий код.
$page['sidebar_first'] = array(
'#theme' => 'mymodule_sidebar',
'#topics' => array('first topic', 'second topic', 'third topic'),
'#parents' => array('my topics', 'my friend's topics'),
);
Переменные, которые не получают явного значения, получат значение по умолчанию, указанное в hook_theme()
; в этом случае значение по умолчанию для используемых переменных - NULL
.