2010-05-05 91 views
2

我們已經創建了一個用於組織和發佈我們的時事通訊內容的自定義模塊。如何將變量從自定義Drupal模塊注入頁面模板?

現在我遇到的問題是 - 我不熟悉主題和Drupal模塊開發,所以它可能只是一個知識問題,而不是Drupal問題 - 是如何獲取每個通訊的主題。

在這一點上我們的簡報URL結構將是:

/通訊/ {通訊名}/{版名}/{問題的最新}這意味着我們可以在創建模板文件我們主題使用文件名,如頁面新聞快訊 - {通訊名稱} - {版本名稱} .tpl.php,這是偉大的。我遇到的一個問題是所有的內容都來自主題的$ content變量。我想讓它通過不同的變量(爲了讓我可以在主題內部在某些區域放置某些內容)。

有沒有適當的方法來做到這一點?

編輯:回答一些問題:問題是一個節點(有問題,版本和通訊節點),路徑是使用帶通配符和路由器的hook_menu設置的。

+0

是通訊節點嗎? 是由pathauto生成的url路徑嗎? – 2010-05-06 00:33:13

回答

1

最好我能找到的答案是在phptemplate_preprocess_page中添加一個檢查以將變量發送回模塊並更新它們。

像這樣:

function phptemplate_preprocess_page(&$vars) { 
    if (module_exists('test_module')) { 
     _test_module_injector($vars); 
    } 
} 

然後在我的test_module.module文件我創造了這個功能:

function _test_module_injector(&$vars) { 
    $vars[] = call_to_other_functions_to_load_vars(); 
} 

它似乎工作。我希望有一種方法可以在不觸及主題的template.php文件的情況下執行此操作,但除此之外,這可以很好地工作。

+1

觸摸template.php文件有什麼問題?這就是要完成與主題相關的編碼的地方。 – lazysoundsystem 2010-05-12 18:42:35

0

如果有更好的模板預處理函數文檔,Drupal會更易於訪問 - 因爲它需要將來自許多不同解釋的信息拼湊在一起。開始的一個地方是在這裏:

http://drupal.org/node/223430

,但如果你把下面通過本教程的工作的時候,你會發現你可以做最多的事:

http://11heavens.com/theming-the-contact-form-in-Drupal-6

+0

該教程似乎是在正確的道路上。將嘗試明天工作,看看我們如何結束。 – 2010-05-06 03:08:49

+0

或者另一種選擇,或許更容易,是將節點顯示爲View,並使用Views模塊的模板建議與每個單獨的字段進行交互。 – lazysoundsystem 2010-05-06 14:58:44

+0

不幸的是,它看起來像教程主要側重於主題,而不是模塊本身。雖然這是一個很好的教程。 – 2010-05-07 15:10:35

0

這是一箇舊帖子,OP的問題似乎已經解決。

然而,僅僅爲他人通過谷歌找到這個(或其他):

  1. 安裝 '傑韋利' 模塊:http://drupal.org/project/devel
  2. 另外, '傑韋利Themer' 模塊:http://drupal.org/project/devel_themer

使用Devel Themer來檢查$ content變量並找出需要提取的內容。

這裏有一堆Devel/Themer文檔/ tuts,但它的用法非常簡單。但請注意,在主題中打印之前,需要對其中的某些內容進行消毒。

建議將節點顯示爲視圖,然後修改視圖模板聽起來很瘋狂,儘管它可以工作。