不活動的任務標籤有什麼辦法,以顯示本地任務的用戶,如果他們不具備必要的權限?現在看來,Drupal只是將它們排除在頁面代碼之外。我想向他們展示,但使用不同的CSS類。如何顯示在Drupal
的Drupal的版本是5.20
不活動的任務標籤有什麼辦法,以顯示本地任務的用戶,如果他們不具備必要的權限?現在看來,Drupal只是將它們排除在頁面代碼之外。我想向他們展示,但使用不同的CSS類。如何顯示在Drupal
的Drupal的版本是5.20
即使有相關的Drupal 5和6之間的本地任務的建築一定的差異,Mac是正確的邏輯忽略條目不被當前用戶訪問是相當深深嵌入menu.inc功能。如果你想尋找自己,從theme_menu_local_tasks()
開始,並從那裏進行功能調用。
如果我不得不實現你要找的功能,我寧願避免亂搞直接菜單訪問設置了Mac建議。相反,我會用定製版本覆蓋theme_menu_local_tasks()
,並在那裏複製條目檢索邏輯。第一次運行會像以前一樣獲取主要和次要鏈接,第二次將執行相同的操作,而impersonating another user(在這種情況下可能是用戶1)。這樣,我會得到兩個版本的本地任務標記,然後我需要以某種方式進行區分以找到當前用戶不允許的標記,因此需要額外的CSS類。
請注意,這樣做仍然有點難看,因爲menu_primary_local_tasks()
和menu_secondary_local_tasks()
已經返回主題列表,所以比較需要在標記上工作,可能會以某種方式解析li標籤。因此,花費一些時間嘗試做同樣的事情(獲取兩個不同用戶的本地任務)可能是值得的,但在主題化之前使用較低級別的函數獲取條目。
注意:如果你最終使用user impersonation logic,請務必使用模擬過程中禁用會話儲蓄的安全,第二個版本。
我知道D6版hook_menu比D5的要好得多。但是 - 您無法覆蓋該行爲,因爲它在menu.inc中進行了硬編碼。
如果我有什麼上面,一個解決辦法(相當不雅,我必須承認)右可能是:
如前所述,我不太瞭解D5,所以它可能也會證明你可以用更簡潔的方式實現你想要的東西!
+1 - 我會用另一種方法(如在一個單獨的答案提出的),只是爲了防止需要添加訪問檢查所有受影響的菜單回調,這將是繁瑣的維護。但是這個版本是一個有效的選擇,並且可以更容易/更適合於具有較少通用調整需求的情況。 – 2009-11-24 15:36:43
謝謝,就這麼做。有效。用戶模仿不是必需的,但是感謝鏈接。 – 2009-11-24 11:53:27
我也喜歡這種方法。我看到的比我之前提出的最大的優點是,這個比例更好:因爲標記是由某種「差異」函數生成的,而不是通過文本內容選擇菜單項,所以應用此解決方案會更快如果你需要調整的菜單數量增加。它也不依賴於js/jQuery(雖然幾乎每個瀏覽器都支持它),這對於您的頁面能夠正確顯示更「依賴」。 – mac 2009-11-24 15:31:36