2012-07-18 40 views
0

因此,我希望基於該用戶的其他用戶角色在用戶角色的歡迎頁面上出現特定鏈接(由規則指向)。每個用戶可能有多個這樣的鏈接。如何基於用戶角色創建程序化內容(Drupal)

例如:

說用戶鮑伯有經理,植物學教練和馴獅的用戶角色。他的經理的用戶角色將引導他到經理歡迎頁面(已經完成),但是,基於他的用戶角色,經理歡迎頁面也將鏈接到植物學培訓頁面和獅子馴服頁面。

我該如何去做這件事?我會爲此使用規則模塊嗎?

這是在Drupal 6

+1

什麼類型的頁面是歡迎頁面? (節點/視圖/面板/等) – Clive 2012-07-18 22:15:18

+0

節點,據我所知。 – 2012-07-19 01:16:13

回答

0

一些想法供你使用.. 如果您使用的面板/模塊Ctools,您可以使用訪問規則,僅向特定角色顯示的具體內容開始。這不需要任何PHP代碼,所以我認爲這是最好的方法,即使你知道如何在PHP中做到這一點。

當前用戶的數據可用作全局變量$ user。

<?php 
global $user; 
if(in_array('manager', $user->roles)) { 
    print 'my stuff' // print the module you want to display. Usually module_invoke() or some function call. 
} elseif(in_array('trainer', $user->roles)) { 
    print ''// stuff for users with the trainer role. 
} 
?> 

此外,通過核心功能,您可以按其角色顯示特定用戶的塊。轉到塊的配置鏈接並設置可見性。請注意,如果您使用php來打印塊,則不會執行檢查。因此,所有的PHP或所有的用戶界面。

如果該塊是一個視圖,您可以在Views UI設置訪問權限。

user_access()功能是我個人最喜歡在這種情況下顯示塊。它可以讓你放置幾乎獨立於角色的塊。如果用戶有權限,則顯示它。不需要假定某個角色具有此權限。

此外,除非您通過模塊進行覆蓋,否則如果用戶無法訪問該頁面,塊將不會顯示。 例如,在節點/ * /編輯頁面沒有訪問限制的情況下,顯示節點編輯指令塊(在這種情況下使用塊非常愚蠢,因爲您可以輸入提交指令 - 僅舉例)。必須允許用戶訪問該頁面才能顯示塊。