2010-08-13 87 views
2
  • List -> l_user我有一個List節點,它具有用戶引用字段(l_user)。
  • Story -> s-user然後我有Story也有一個用戶引用字段(s_user)的節點。
  • ListStory之間沒有直接聯繫。

我想添加一個視圖到List,該視圖列出引用list引用的同一用戶的所有故事。基本上像SELECT stories WHERE story.s_user = this list.l_userl_user這樣的用戶是該視圖所在列表中引用的用戶。如何解決這個問題?

到目前爲止,視圖正在被node:type story過濾,但我不確定使用什麼(參數/過濾器等)將story s_user鏈接到list l_user

這是可以與視圖?

回答

5

你可以用Views參數來做到這一點。你要做的是按用戶過濾該列表,並讓用戶從當前所在的節點(或更具體地說是節點的用戶引用字段)中篩選出來。所以你需要做的是提供一個與節點的用戶引用字段相同的參數。

要做到這一點,請將視圖設置爲正常狀態,就好像您正在顯示每個用戶的節點一樣。所以,你可能有一個觀點是這樣的:

  • 1(用戶1)
  • 第2頁(通過用戶1)
  • 第3頁(用戶2)
  • 第4頁(通過用戶2)
  • 第5頁(由用戶1)

其中用戶是被叫故事用戶參考每個頁面上的用戶參考字段。

現在,在參數添加一個參數爲內容:故事用戶參考。現在,該視圖將僅顯示由參數中指定的用戶發佈的節點。問題是,在一個塊中,沒有參數需要指定:您需要提供默認參數。

還是關於用於內容參數配置窗格:故事用戶參考,選擇提供默認參數採取的措施,如果參數是不存在。您會得到各種選項,但是它們都不是您要查找的內容:當前節點的用戶參考字段。

所以你需要使用PHP代碼行動,並使用下面的代碼:

$node = node_load(arg(1)); 
return $node->field_list_user[0]['uid']; 

這將加載基於從當前頁面的路徑檢索到的節點ID的節點,並返回該節點的用戶參考字段(將field_list_user更改爲列表節點上用戶參考字段的名稱)。

所以,如果我在節點17,其用戶參考場狀態的用戶4,即會被傳遞給視圖的說法是4視圖將那麼誰擁有用戶參考在視圖中只顯示節點,同時也是4.

保存您的視圖中創建一個塊顯示,並把它無論你想。當您訪問帶有用戶引用字段的節點頁面時,該塊將填充引用的用戶節點。

+0

謝謝。您的答案與Scott Reynen的答案結合起來幫助。但是這個更徹底,所以它值得選中標記。 – Berming 2010-08-15 01:50:56

2

要解決此問題,您需要下載NodeReferrer。 http://drupal.org/project/nodereferrer

它提供CCK節點參考字段的計數器部分。

然後,您可以在視圖中調用字段「節點referrer」。

+0

但在視圖本身,我怎麼看待「節點引薦」字段?作爲一個論據或過濾器或其他東西? – Berming 2010-08-13 08:36:32

+0

我假設你想讓所有的故事連接到用戶?是位於內容類型用戶或故事中的參考字段? – Paul 2010-08-13 08:47:19

+0

'story'和'list'都包含一個存儲'user'的字段。然而,我試圖將視圖添加到'list'中,並且該視圖應該只包含''''用戶'匹配列表上的'user'的故事。 – Berming 2010-08-13 09:08:58

3

我建議從列表節點獲取所有用戶引用並將其傳遞給views參數。所以,你的代碼看起來像這樣(未經):

$user_ids = array(); 
foreach ($list_node->l_user as $user_reference) { 
    $user_ids[] = $user_reference['uid']; 
} 
$view = views_get_view('list_view'); 
return $view->preview('block_1', array(implode(',', $user_ids)); 

,它假定你有一個名爲「list_view」有一個名爲「block_1」顯示視圖(你可以看到機器的名字,當你將鼠標懸停在顯示) 。該顯示必須是節點視圖,其中節點類型爲'story',內容爲user_l的參數設置爲具有多個值。該代碼中幾乎肯定存在一個錯誤,但我知道一般概念是有效的,因爲我之前已經完成了幾次。

+0

非常感謝。你的答案與馬克特拉普的答案相結合幫助。 – Berming 2010-08-15 01:51:44