2012-07-12 51 views
1

我創建了一個自定義事件的內容類型在Drupal 7與教師和學生用戶領域。我想創建一個視圖,其中的內容只顯示給那些內容中的教師或學生的用戶 - 一個自定義日曆。Drupal 7的過濾器字段當前用戶

到目前爲止,我試圖在內容創建一個過濾器:教師(field_teacher),使用用戶:UID用戶。我知道這是一個語法問題,但我需要的值是當前登錄用戶

回答

0

它實際上是一個非常簡單的解決方案 - 我的兩個實體引用(學生和老師)創建上下文過濾器,然後在節中,我補充說:「使用當前登錄的用戶」,「如果沒有默認提供的」。

然後我不得不寫一個自定義模塊與hook_query_alter改變上下文過濾器的與一個或

0

要獲取當前登錄的用戶uid,請按照此代碼段。

global $user; 
$uid = $user->uid; 

希望這項工程...穆罕默德。

+0

我想創建一個過濾器,現場的學生= currentUser或現場老師= currentUser。 – 2012-07-12 08:54:32

+0

你想顯示用戶發佈自己的內容嗎?! – 2012-07-12 08:56:51

+0

不一定 - 這就是爲什麼我不能使用作者標籤。例如,如果教師創建內容,我仍然希望教師和學生能夠看到它。 – 2012-07-12 09:27:54

0

嘗試添加一個關係到該字段內容:教師(field_teacher)首先,然後再次檢查過濾器選項以查看您需要的那個現在是否可用。

+0

你的意思是在內容類型或視圖中添加關係?我不確定我需要什麼過濾器!我補充說:「實體引用:引用的實體」的關係,無論是學生和教師,但我不知道這是應該什麼樣的影響有 - 它並沒有改變什麼過濾。 – 2012-07-12 14:48:03

+0

@TrevorNewhook我的意思是在視圖中添加關係。它不會更改被過濾的內容,但是一旦添加了關係,您應該獲得更多的過濾器選項。 – nmc 2012-07-12 14:53:45

0

爲什麼不只是創建兩個不同的顯示屏,並使用訪問視圖選項根據用戶的角色過濾?

把這一建議旁白:你不應該使用兩個字段一名教師,爲您的內容類型學生之間的區別來。使用單個字段選擇列表。作爲一個例子,對於學生來說,價值將是0,對於教師來說是1。

然後添加字段作爲語境篩選,選擇提供默認值和使用PHP代碼作爲類型。使用下面的代碼來確定用戶的角色,並返回相應的值:

global $user; 

if(in_array('student', array_values($user->roles))) { 
    return 0; 
} else { 
    return 1; 
} 

我會建議,雖然我的第一個建議,並利用基於角色的訪問。

相關問題