2009-10-06 23 views
0

...或換句話說,如何創建一個簡單的連接,就像我在SQL中做的那樣?Drupal:從視圖2中的多個節點類型檢索數據?

假設我想以下信息:

只是作爲一個例子:

  • 一個人的全名
  • 一個人的愛好。

他的全名位於(content profile)節點類型'name_and_address'中,他的興趣愛好是'興趣愛好'。

在SQL中,我會通過node.uid將它們鏈接在一起。 我已經看到關於使用關係的一些信息,但是這與用戶節點引用一致。 我只想從一個內容類型和另一個內容類型相同的用戶。

現在我怎麼能得到他的名字和他的愛好在1視圖?

回答

2

有一個如何here這樣做的工作?

如果不是......

視圖可以自定義如果運氣好會有這已經是一個模塊擴展連接,過濾器等。有些模塊甚至提供了自己的視圖插件。

雖然文檔有點分散,但您可以編寫自己的視圖插件。

另一件需要注意的事情是,意見並不總是答案。有時候編寫一個自定義查詢和顯示處理程序會以少得多的麻煩做你想做的事。

+0

偉大的文章,thx! – eddy147 2009-10-06 10:32:18

0

看看視圖的關係部分。這允許你關聯(即加入)不同類型的內容(即表)。對於習慣SQL的人來說,這並不是特別直觀,但是這個視頻解釋了大部分內容。 http://www.drupalove.com/drupal-video/demonstration-how-use-views-2s-relationships

+0

是的,但它處理樣本與公司 - 部門,其中鏈接正在由用戶參考創建。我沒有這種情況,因爲我只想讓創建節點​​的同一個用戶的節點。 – eddy147 2009-10-06 08:50:02

0

您可以在模板文件中使用views_embed_view()來手動指定它們出現的位置(並通過擴展將一個視圖呈現在另一個視圖之下)。 您可以在自定義模塊(modulename_embed_view($name, $display_id)中覆蓋此函數),以便有選擇地編輯允許哪些數據輸出到頁面。

例):

function modulename_embed_view($name, $display_id) { 
    if (strcmp($_GET['q'], 'node/123') === 0) { 
    $view = views_get_view($name); 
    $view2 = views_get_view('second view'); 
    $output = $view['some element'] . $view2['element']; 
    } 
    return $output; 
} 

我知道,這是一個很有黑客 - 我只是想表明一個可能會如何使用PHP手工繪製和修改你的模板文件的意見。