2013-03-12 27 views
0

我對drupal相當陌生。我已經看到這個例子創建一個帶有塊的模塊。我的問題是我們可以將$ content從customblock_block_view發送到另一個模板文件,通過添加一些額外的HTML來渲染它?如果是這樣如何?如何渲染模板文件中的塊

/** 
* Implements hook_block_info(). 
*/ 
function customblock_block_info() { 
    $blocks = array(); 

    $blocks['list_modules'] = array(
    'info' => t('A listing of all of the enabled modules.'), 
    'cache' => DRUPAL_NO_CACHE, 
); 

    return $blocks; 
} 

/** 
* Implements hook_block_view(). 
*/ 
function customblock_block_view($block_name = '') { 
    if ($block_name == 'list_modules') { 
    $list = module_list(); 

    $theme_args = array('items' => $list, 'type' => 'ol'); 
    $content = theme('item_list', $theme_args); 

    $block = array(
     'subject' => t('Enabled Modules'), 
     'content' => $content, 
    ); 

    return $block; 
    } 
} 

回答

0

您可以創建自己的模板文件,你只需要使用hook_theme註冊它:

function customblock_theme() { 
    return array(
     'myblock' => array(
     'template' => 'mytpl', 
     'variables' => array('variable' => NULL), 
     ), 
    ); 
} 

下一步是建立第三方物流文件;像主題中的mytpl.tpl.php。 然後,把它用theme()

theme('myblock',$theme_args); 

現在,在模板你有$theme_args可作爲$variable

1

項目使用theme($hook, $variables)函數呈現。使用Theme developer模塊找出要傳遞的內容爲$hook。對於塊,它是block

Theme developer模塊還會告訴您該項是否通過函數或模板呈現。在第一種情況下,請查找功能theme_block。在第二種情況下,請查找文件block.tpl.php。該項目的文檔告訴你,$variables陣列應該是什麼樣子。

構建$variables數組並調用theme('block', $variables)

請注意,對於模板文件,某些變量來自預處理函數,如theme()文檔中所述。這些變量不需要由theme($hook, $variables)的調用者提供。相關的預處理功能應在模板文件中列出。

+0

你能告訴我什麼是鉤子「塊」的$變量,或者你可以點我到任何資源在哪裏指定這些參數? – prasadmsvs 2013-03-12 09:40:56

+0

我只是指出你的意思。它在函數'theme_block'或文件'block.tpl.php'中。這兩者都很少存在(只有當contrib模塊或主題爲主題使用主題函數提供了主題鉤子的模板文件時)。 – Oswald 2013-03-12 09:41:25

+0

如果我想爲該塊編寫自定義模板,該怎麼辦? – prasadmsvs 2013-03-12 11:13:59