2013-05-15 228 views
2

創建用於創建自定義塊的自定義.tpl文件的drupal方法是什麼? 具體來說,我試圖以編程方式創建一個塊,然後找到一種方法來從模塊php代碼中分離視圖代碼。如果它是一個頁面,Drupal主題()將是實現這一目標的非常有效的方法。但是我找不到什麼是Drupal方式來爲自定義塊做同樣的事情。我試圖使用hook_theme()而沒有運氣。在drupal中爲自定義塊創建一個自定義模板文件

//implementation of hook_block_info 
    function mymodule_block_info() { 
     $blocks = array(); 
     $blocks['myblock'] = array(
     'info' => t('My Block Title'), 
    ); 

     return $blocks; 
    } 

    //implementation of hook_block_view 
    function mymodule_block_view($delta='') { 
     $block = array(); 

     switch($delta) { 
     case 'myblock' : 
      $block['content'] = mymodule_get_block_view(); 
      break; 
     } 
     return $block; 
    } 

    function mymodule_get_block_view(){ 
     $variables=array(); 
     return theme('mytemplate', $variables); 

    } 

    //implementation of hook_theme 
    function codefactory_theme() { 
     return array(
     'mytemplate' => array(
      'variables' => array(), 
      'template' => 'mytemplate', 
     ), 
    ); 
    } 

回答

3

這似乎工作正常。

//implementation of hook_block_info 
function mymodule_block_info() { 
    $blocks = array(); 
    $blocks['myblock'] = array(
    'info' => t('My Block Title'), 
); 

    return $blocks; 
} 

//implementation of hook_block_view 
function mymodule_block_view($delta='') { 
    $block = array(); 

    switch($delta) { 
    case 'myblock' : 
     $variables = array(); //do stuff here 
     $block['content'] = theme('mytemplate', $variables); 
     break; 
    } 
    return $block; 
} 


//implementation of hook_theme 
function mymodule_theme() { 
    return array(
    'mytemplate' => array(
     'variables' => array(), 
     'template' => 'mytemplate', 
    ), 
); 
} 
3

它遵循以下建議:block_ MODULE _DELTA。按照上面的例子,我會嘗試命名文件block - mymodule.tpl.php如果您只有一個塊,或者block - mymodule - 1.tpl.php如果您有多個塊。

參考文獻:api.drupal.orgdrupal.org

相關問題