我使用 drupal 6 和 book 模块。我想更改书籍内容类型的设计。所以我需要在我的 tpl 文件中使用一个模块的变量。book-navigation.tpl.php 中有一个名为 $next_title 的变量。如何在我的模板文件中使用它?
我读了很多关于预处理函数的内容,但我看不到一个真实的例子。
您需要使用 template_preprocess_node:
http://api.drupal.org/api/drupal/includes%21theme.inc/function/template_preprocess_node/6
在主题的 template.php 文件中,执行以下操作:
/**
* Implements template_preprocess_node().
*/
function MY_THEME_preprocess_node(&$variables) {
if ($variables['node']->type == 'book') {
$variables['next_title'] = 'My custom next title';
}
}
添加该功能后刷新 Drupal 的主题注册表,那么您应该已经设置好了。
或者,如果您希望函数位于自定义模块中,则可以使用MY_MODULE_preprocess_node 。
然后在您的 book-navigation.tpl.php 中(您可以使用默认的,或者将此文件添加到您的主题目录并进行修改),您只需要使用:
<?php print $next_title; ?>
另请查看template_preprocess_book_navigation()函数:
并确保在 $variables 上使用devel 模块的dpm 函数来轻松查看可用的内容,如下所示:
dpm($variables);
book_next ()函数可能在您的节点预处理器中使用。有时您必须使用预处理器将变量动态注入到 tpl.php 文件中。因为每个预处理器和每个 tpl.php 文件的 $variables 都是不同的。