2013-04-11 77 views
0

我使用drupal 6和book模块。我想更改书籍内容类型的设计。所以我需要在我的tpl文件中使用模块的变量。 book-navigation.tpl.php中有一个名为$ next_title的变量。我怎样才能在我的模板文件中使用它?在模板文件中使用模块变量

我读了很多关于预处理函数的内容,但是我看不到一个真实的例子。

+0

看看['template_preprocess_book_navigation()'](http://api.drupal.org/api/drupal/modules!book.book.module/function/template_preprocess_book_navigation/6),这就是'$ next_title '变量来自 – Clive 2013-04-12 11:24:50

+0

好吧,我知道,但我是一个新手。我需要指导。我克隆了这个函数,并将其名称改为book_preprocess_node。变量来到节点页面,但它们都是NULL。 – tebdilikiyafet 2013-04-12 16:50:59

回答

0

你要使用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

然后在你的书navigation.tpl.php(你可以使用默认的一个,或将此文件添加到您的主题目录,并进行修改),你只需要使用:

<?php print $next_title; ?> 

而且检查出template_preprocess_book_navigation()功能:

而且一定要使用devel module's DPM功能上$变量来很容易地看到什么是可用的,就像这样:

dpm($variables); 

book_next()函数可能在您的节点预处理器中有用。有时你必须使用预处理器动态地将变量注入到tpl.php文件中。因为每个预处理器和每个tpl.php文件的$变量都不相同。

+0

首先感谢您的回复。我知道这种方法。但我想让它变得动态。通常$ next_title对每个书籍节点都有不同的值。我想在node-book.tpl.php中使用它 – tebdilikiyafet 2013-04-11 15:55:23

+0

$ variables ['next_title'] ='我的自定义下一个标题';这对每个书籍节点都是静态的。 – tebdilikiyafet 2013-04-11 15:56:10

+0

有一些变量是book-naviagtion.tpl.php,我想单独在node-book.tpl.php中打印它们。我会疯狂的没有这个解决方案 – tebdilikiyafet 2013-04-11 16:17:16