在drupal中为自定义块创建自定义模板文件

时间:2013-05-15 16:40:30

标签: drupal-7 drupal-theming

为主题化自定义块创建自定义.tpl文件的drupal方法是什么? 具体来说,我试图以编程方式创建一个块,然后找到一种方法将视图代码与模块php代码分开。如果它是一个页面,Drupal主题()将是非常有效的方法来实现这一点。但是我无法找到Drupal为自定义块做同样事情的方法。我试图使用hook_theme()没有运气。

    //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',
        ),
      );
    }

2 个答案:

答案 0 :(得分:3)

遵循以下建议:block_ MODULE _DELTA。按照上面的示例,如果只有一个块,我会尝试命名文件 block - mymodule.tpl.php ,或者阻止 - mymodule - 1.tpl.php < / strong>如果您有多个。

参考文献:api.drupal.orgdrupal.org

答案 1 :(得分: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',
    ),
  );
}