2013-05-15 1 views
2

Что такое способ drupal для создания пользовательского файла .tpl для создания пользовательского блока? В частности, я пытаюсь создать блок программно, а затем найду способ отделить код вида от модуля 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_ МОДУЛЬ _delta. Следуя приведенному выше примеру, я попробую присвоить имя файлу block - mymodule.tpl.php, если у вас есть только один блок, или block - mymodule - 1.tpl.php, если у вас есть несколько.

Литература: api.drupal.org и drupal.org.