在Drupal 6下我有一个自定义块,我已经命名并放置在一个自定义的右侧边栏区域中。这个块的ID(我从block.tpl.php
,$block_id
帮助变量中发现)是7.在区域之间移动时,块会更改其ID?
我覆盖了这个块的输出,因为它显示一个View,我需要改变标记;我在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 */
}
}
现在,我已经搬到从右侧栏区该块(这是一个自定义的区域,而不是默认一个与加兰一起来)到页脚区域,它也有一个自定义名称。突然,我的覆盖模板文件block-my-override-template.tpl.php
不再被引用。
我做一个小小的挖掘和输出的唯一块ID从block.tpl.php
内,并奇迹般地此块已改变其ID为7〜13!面对一张脸,毫不逊色!将该块返回到右侧边栏区域也会将块返回到ID 7(并且我的所有代码都会再次开始工作)。
我的问题是:如果它的“唯一”ID在从一个区域移动到另一个区域时发生变化,我们如何唯一标识一个块?
目前,我在Drupal的块内部创建了一个独特的文本标记,例如'{JD_MY_BLOCKNAME}',然后,使用与上述类似的功能,检测这个而不是块ID。但它似乎很繁琐。 –