在Drupal 6下,我有一个自定义块,我已经将它命名并放置到一个自定义的右侧侧边栏区域中。这个块的ID (我从block.tpl.php中从$block_id助手变量中发现)是7。
我正在重写这个块的输出,因为它显示一个视图,我需要更改标记;我在template.php中有一个名为myTheme_preprocess_block()的预处理函数,它搜索块的唯一ID,因此:
myTheme_preprocess_block(&$vars) {
$this_block_id = $vars['id']; /* region-independent ID (for reliability) */
$vars['template_files'] = array();
switch ($this_block_id) {
case 7:
$vars['template_files'][] = 'block-my-override-template';
break;
default:
/* take no action */
}
}现在,我已经将这个块从右边的侧边栏区域(它是一个自定义区域,而不是Garland附带的默认区域)移动到一个页脚区域,它也有一个自定义名称。突然,我的重写模板文件block-my-override-template.tpl.php不再被引用。
我从block.tpl.php内部挖掘并输出了唯一的块ID,这个块神奇地将的ID从7更改为13!带着一张笔直的脸,也一样!将这个块返回到右边的侧边栏区域也会将这个块返回到ID 7(我的所有代码都开始工作了)。
我的问题是:当块从一个区域移动到另一个区域时,如果它的“唯一”ID发生变化,我们如何才能唯一地识别它?
发布于 2011-10-11 18:30:16
如果您使用的是视图,为什么不重写视图的块显示,而不是使用实际的块呢?
您也可以简单地在模块中声明自定义块吗?这将使您更容易管理块的主题化方面。
https://stackoverflow.com/questions/7609532
复制相似问题