2012-01-13 50 views
0

我有一個節點形式,作者應該能夠編輯,除非某些條件是真實的。對於作者,我想在這些條件下刪除「編輯」選項卡。高級用戶應該仍然可以使用「編輯」選項卡。Drupal:如何在某些條件下刪除節點的「編輯」選項卡?

hook_menu_alter()函數不適用於我,因爲它只在菜單生成之前被調用,然後纔會放入緩存。 (a)在不添加另一個contrib模塊的情況下執行此操作,並且(b)在模塊級別而不是主題級別(爲了安全性),但我也有興趣聽取其他方法。

+0

首先,'一定conditions'是有點模糊。你可以說得更詳細點嗎?這也許可以解釋爲什麼你不想在hook_menu_alter級別處理它,但在這方面的澄清也是有幫助的。 – benastan 2012-01-13 08:08:26

回答

3

你或許可以用Rules這樣做,但我個人倒自定義模塊中使用hook_node_access()

function MYMODULE_node_access($node, $op, $account) { 
    if ($op == 'edit') { 
    if ($some_condition) { 
     return NODE_ACCESS_ALLOW; 
    } 
    return NODE_ACCESS_DENY; 
    } 
    return NODE_ACCESS_IGNORE; 
} 
+0

謝謝。這正是我所做的。像魅力一樣工作。 – Ted 2012-01-25 19:57:54

相關問題