1

我目前theme_blocks()在 Drupal 6 的基本主题中使用,我很难将我的主题转换为 Drupal 7,因为theme_blocks()在 Drupal 7 中没有使用。下面的代码是该函数的简单实现以及我目前在 Drupal 6 中如何使用它:

/* 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 中的主题设置动态进行更改?

4

1 回答 1

1

在 Drupal 7 中不再使用theme_blocks()主题函数(它不是钩子)。如果您需要更改块的呈现方式,您需要为块模板文件实现预处理函数(THEMENAME_preprocess_block();请参阅template_preprocess_block的文档() ) 或在您的主题中使用block.tpl.php模板文件。

请记住,逻辑部分应该放在预处理函数中,而渲染代码应该放在模板文件中。

于 2011-08-25T20:46:36.070 回答