在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。但它似乎很繁瑣。 –