原文:http://drupal.org/node/223440
译者:葛红儒, Think in Drupal
Devel模块展示了“页面”模板的可用的模板建议。
内核的所有建议的列表可参看“内核模板和建议”。
这些命名建议是在预处理函数中设置的。内核已经提供了大量的建议。如果你需要进一步的扩展它,你需要在你的主题下面的template.php文件中为相应的钩子添加一个预处理器。本例中,我们为"page"主题钩子添加了扩展建议。这里的钩子可以为任何模板钩子。
前缀"drop"应改为你主题的名字。
<?php
function drop_preprocess_page(&$variables) {
global $user;
// Add a single suggestion.
if (module_invoke('throttle', 'status') && isset($user->roles[1])) {
$variables['template_file'] = 'page-busy';
}
// Add multiple suggestions.
if (!empty($user->roles)) {
foreach ($user->roles as $role) {
$filter = '![^abcdefghijklmnopqrstuvwxyz0-9-_]+!s';
$string_clean = preg_replace($filter, '-', drupal_strtolower($role));
$variables['template_files'][] = 'page-'. $string_clean;
}
}
}
?>
有两种方式添加这些建议。
在上面的例子中,当达到了节流上限时,并且访问用户为匿名时,Drupal将尝试使用名为"page-busy.tpl.php"的文件。而其它代码,则告诉Drupal根据当前用户角色选择相应的模板,比如"page-authenticated-user.tpl.php"。如果找不到的话,就使用基模板"page.tpl.php"。这是非常简单的例子。你可以根据你可用的数据来自己设置上下文。
一些注意点:
<?php
// Do not do this:
$variables['template_files'] = array('hook-suggestion');
// Instead do this:
$variables['template_files'][] = 'hook-suggestion';
?>