2011-03-16 62 views
1

現在,如果我想重寫Book模塊生成的$ block-> content ...我如何覆蓋它並自定義標題列表?謝謝。

回答

5

可以使用preprocess_block功能

function phptemplate_preprocess_block(&$vars) { 
    if (isset($vars['block'])) { 
     print_r($vars); 
    } 
    } 

,挖掘到這些結果。

關於內容,這是一個模塊生成的塊,我希望$content是使用theme()函數的渲染器,所以你只需要改變它。

+0

通過書籤模塊產生的塊。我應該怎麼做?謝謝 – runeveryday 2011-03-16 02:13:24

+0

我建議使用Devel模塊並使用它提供的dpm()函數來更容易地讀取調試輸出。 – 2011-03-16 04:30:10

2

$ vars參數將包含有關以塊爲主題的所有信息。在你的情況下,你希望模塊是「書」。

function phptemplate_preprocess_block(&$vars) {  
    if (isset($vars['block'])) { 
     if($vars['block']->module == 'book') { 
     $vars['block']->content = "My new content"; 
     } 
    } 
    } 
+0

好一個PPC代碼,我知道phptemplate_preprocess_node,但phptemplate_preprocess_block看起來很有趣。 drupal擁有預處理函數中的所有實體嗎? – 2011-03-16 19:26:01

+0

它們只適用於作爲模板實現的主題鉤子(純主題功能不會獲得預處理器)。看到這個http://stackoverflow.com/questions/2383865/how-do-i-use-theme-preprocessor-functions-for-my-own-templates – 2011-03-17 04:42:23

+0

PPC編碼器,對不起,我出你代碼我的主題是template.php.但它不能工作。 – runeveryday 2011-03-17 04:56:40

2

可以使用preprocess_block功能

function yourthemename_preprocess_block(&$vars) 
{ 
    if(isset($vars['block'])) 
    { 
      //i have override a footer_block 
      if($vars['block']->region == 'footer_block') 
      { 
       $vars['content] = "Please Enter Some data"; 
      } 
    } 
}