将 Drupal 6 主题转换为 Drupal 7 时,是否有 theme_blocks() 的解决方法?
我目前在 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 中的主题设置动态进行更改?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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.