在区域之间移动时,块会更改其ID吗?

时间:2011-09-30 11:14:00

标签: drupal-6 block drupal-theming

在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发生变化,我们如何唯一地识别该区块?

1 个答案:

答案 0 :(得分:1)

如果您正在使用View,为什么不改写视图的块显示而不是实际阻塞?

您也可以简单地在模块中声明自定义块?这应该可以让您更轻松地管理块的主题方面。