您在這裡

新增tab失敗....why??

braveht's 的頭像
braveht 在 2006-05-14 (周日) 16:15 發表

我想要在每個node的頁面上新增一個Tab,
於是我寫了一個module...把下面這一段加到module裡hook_menu的實做中:

if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(array('nid' => arg(1)));
if ($node->nid) {
$items[] = array(
'path' => 'node/'. arg(1) .'/configure',
'title' => t('configure'),
'type' => MENU_LOCAL_TASK
);
}
}

enable module後卻沒有出現我新增的Tab......

可是如果我把同一段code加到node.module裡的hook_menu實做裡就沒有問題
這是為什麼......

建議你裝devel這個module

menu system的原理是這樣,你可以在其他module看到$may_cache這個變數,但你可能沒有注意到他的用處。

但其實對一個module設計者而言,他是很重要的,他是用來告訴drupal menu hook在invoke所有hook_menu時,要不要把該路徑cache起來,如果$may_cache==TRUE,該路徑會被送至cache table裡快取,不信可以看看cache table的前幾行的資料,看看有沒有menu的cache;反之,如果$may_cache==FALSE,那該路徑就不會被cache起來囉,每次要造訪那一面的人,都得invoke全部module裡的hook_menu,才能找的到他的頁面路徑,效能自然有差了。

這跟你問的問題到底有什麼關係呢... drupal的tab是根據load出來的menu去建的,至於load出來的menu如果是舊的cache,你的tab當然就出不來囉!

所以,裝個devel,去清空cache看看,你就會發現答案了。

(devel還有很多好用的功能囉...)

--
from open mind to open source~