Регистрация функции темы означает реализацию hook_theme в вашем модуле.
Например, если ваш модуль называется "example
", то вам нужно иметь функцию с именем example_theme
в файле example.module
. Функция темы должна вернуть массив, иначе вы получите знаменитый белый экран смерти.
В example.module :
<?php
// $Id$
// Implements hook_theme
function example_theme(){
return array(
'mydata' => array(
// Optionally, you can make the theme use a template file:
// this line references the file "mydatafile.tpl.php" in the same folder as the module or in the folder of the active theme
'template' => 'mydatafile',
// these variables will appear in the template as $var1 and $var2
'arguments' => array(
'var1' => null,
'var2' => null,
),
),
'myotherdata' => array(
// these variables will appear in the functions as the first and second arguments
'arguments' => array(
'var1' => null,
'var2' => null,
),
)
);
}
// If you don't want to use a template file, use a function called "theme_THEID" to create the HTML.
function theme_myotherdata($var1, $var2){
return "<div>var1= $var1 and var2= $var2</div>";
}
В mydatafile.tpl.php :
<div>mydatafile.tpl.php was called</div>
<ol>
<li>var1: <?php echo $var1; ?></li>
<li>var2: <?php echo $var2; ?></li>
</ol>
Затем вы можете позже вызвать функцию темы вручную, если необходимо:
$html = theme('mydata', 'hello world', 123);
$html = theme('myotherdata', 'hello world', 123);
В этом случае «mydatafile.tpl.php» и «theme_myotherdata» получат значение «hello world» в $ var1 и значение 123 в $ var2.
Есть много других опций , таких как изменение имени функции, использование шаблонов вместо фиксированного имени, возможность иметь функцию в другом php-файле или тому подобное, проверьте ссылку.
Вот еще несколько ресурсов по теме:
Кстати, вам нужно будет перестроить кэш реестра темы, если вы добавите функции в файл .module после его установки, и в этом случае вы можете сделать это, очистив кеш (одним из способов является использование кнопки внизу страницы выступлений).