2013-04-11 53 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