在Drupal 6下我有一个自定义块,我将其命名并放入自定义的右侧边栏区域。这个块的ID(我从block.tpl.php
发现的$block_id
辅助变量)是7。
我重写了这个块的输出,因为它显示了一个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 */
}
}
现在,我已将此块从右侧边栏区域(这是一个自定义区域而非Garland附带的默认区域)移动到页脚区域,该区域也具有自定义名称。突然,我的重写模板文件block-my-override-template.tpl.php
不再被引用。
我在block.tpl.php
内进行了一些挖掘并输出了唯一的块ID,并且奇迹般地,此块已将更改其ID从7更改为13!直面,不低于!将此块返回到右侧边栏区域也会将块返回到ID 7(并且我的所有代码都会重新开始工作)。
我的问题是:当一个区块从一个区域移动到另一个区域时,如果其“唯一”ID发生变化,我们如何唯一地识别该区块?
答案 0 :(得分:1)
如果您正在使用View,为什么不改写视图的块显示而不是实际阻塞?
您也可以简单地在模块中声明自定义块?这应该可以让您更轻松地管理块的主题方面。