2011-08-25 34 views
1

我目前在Drupal 6的基本主題中使用theme_blocks(),並且我很難將我的主題轉換爲Drupal 7,因爲theme_blocks()未在Drupal 7中使用。下面的代碼是該函數的簡單實現以及我目前如何使用它在Drupal 6:在將Drupal 6主題轉換爲Drupal 7時,是否有針對theme_blocks()的解決方法?

/* Implementation of theme_blocks() */ 
function theme_blocks($region) { 
    var output = ''; 
    if ($list = block_list($region)) { 
    //cycle through all blocks in a region 
    foreach ($list as $key => $block) { 
     //test each block for a given condition 
     if ($block->delta == 1) { 
     output = /* make some changes */ 
     } 
     else { 
     output = /* theme per usual */ 
     } 
    } 
    } 

    return $output; 
} 

所以,基本上我只是用theme_blocks()循環通過在一個區域的所有塊,針對特定的塊,並改變了幾件事情。問題是theme_blocks()不再用於Drupal 7.

有沒有一種方法可以定位特定區域中的特定塊/塊,並根據Drupal 7中的主題設置動態進行更改?

回答

1

theme_blocks()主題功能(它不是鉤子)在Drupal 7中不再使用。如果您需要更改塊的渲染方式,您需要爲塊模板文件實現預處理功能(THEMENAME_preprocess_block();請參閱文檔template_preprocess_block())或在主題中使用block.tpl.php模板文件。

請記住,邏輯部分應該放在預處理函數中,渲染代碼應該放在模板文件中。