将 Drupal 6 主题转换为 Drupal 7 时,是否有 theme_blocks() 的解决方法?

发布于 2024-12-01 14:17:33 字数 787 浏览 1 评论 0 原文

我目前在 Drupal 6 的基本主题中使用 theme_blocks(),但我很难将主题转换为 Drupal 7,因为在 Drupal 7 中未使用 theme_blocks()。下面的代码是该函数的简单实现以及我目前在 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() 循环遍历一个区域中的所有块,针对特定块,并更改一些内容。问题是 Drupal 7 中不再使用 theme_blocks() 。

有没有办法定位给定区域中的特定块,并根据 Drupal 7 中的主题设置动态进行更改?

I currently use theme_blocks() in a base theme for Drupal 6, and I have had difficulty converting my theme to Drupal 7 because theme_blocks() is not used in Drupal 7. The below code is a simple implementation of the function and how I currently use it in 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;
}

So, essentially I was just using theme_blocks() to cycle through all blocks in a region, targeting a specific block, and change up a few things. The problem is that theme_blocks() is not anymore used in Drupal 7.

Is there a way to target specific block/blocks in a given region, and dynamically make changes based on a theme setting in Drupal 7?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

稳稳的幸福 2024-12-08 14:17:33

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

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

The theme_blocks() theme function (it is not a hook) is not used anymore in Drupal 7. If you need to alter how a block is rendered you need to implement a preprocess function for the block template file (THEMENAME_preprocess_block(); see the documentation for template_preprocess_block()) or use the block.tpl.php template file in your theme.

Keep in mind that the logic part should go in the preprocess function, and the rendering code should go in the template file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文