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

Drupal 6 块在区域之间移动时会更改其ID吗?,drupal-6,block,drupal-theming,Drupal 6,Block,Drupal Theming,在Drupal6下,我有一个自定义块,我已将其命名并放置在自定义的右侧边栏区域中。这个块的ID(我从block.tpl.php,从$block\u IDhelper变量中发现)是7 我正在覆盖此块的输出,因为它显示一个视图,我需要更改标记;我在template.php中有一个名为myTheme\u preprocess\u block()的预处理函数,它搜索块的唯一ID,因此: myTheme_preprocess_block(&$vars) { $this_block_id

在Drupal6下,我有一个自定义块,我已将其命名并放置在自定义的右侧边栏区域中。这个块的ID(我从
block.tpl.php
,从
$block\u ID
helper变量中发现)是7

我正在覆盖此块的输出,因为它显示一个视图,我需要更改标记;我在
template.php
中有一个名为
myTheme\u preprocess\u 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!一张挺直的脸!将该块返回到右侧边栏区域也会将该块返回到ID7(我的所有代码都会重新开始工作)


我的问题是:如果一个块从一个区域移动到另一个区域时其“唯一”ID发生变化,我们如何唯一地识别该块?

如果您使用的是视图,为什么不覆盖视图的块显示,而不是与实际块混在一起


您也可以简单地在模块中声明自定义块?这将使您更容易管理块的主题方面。

如果您使用的是视图,为什么不覆盖视图的块显示,而不是处理实际块


您也可以简单地在模块中声明自定义块?这将使您更容易管理块的主题方面。

目前,我正在Drupal中的块内创建一个独特的文本标记,例如
{JD_MY_BLOCKNAME}
,然后使用与上述类似的功能,检测这个而不是块ID。但是它看起来很麻烦。目前我正在Drupal中的块内创建一个唯一的文本标记,例如
{JD_MY_BLOCKNAME}
,然后使用与上面类似的函数,检测这个而不是块ID。但是它看起来很麻烦。谢谢你的建议-我下次会尝试这些替代方法。我试图通过在template.php中重写来做“正确”的事情——Drupal的通用文档太糟糕了,可以说,没有浮点,我实际上已经深陷其中了谢谢你的建议-下次我会尝试这些替代方法。我试图通过在template.php中重写来做“正确”的事情——Drupal的通用文档太糟糕了,可以说,没有浮点,我实际上已经深陷其中了