您在這裡

如何JOIN兩個內容類型的欄位?

saa's 的頭像
saa 在 2010-05-28 (週五) 18:11 發表

最近在弄一個物種百科的資料庫,但是發現用views無法將種屬分類結合在一起...,問題敘述如下:

分別建立兩個內容類型來放置種、屬資料

A 內容類型
名稱:屬分類
欄位:屬名_中文
   屬名_英文
   屬下分類群

B 內容類型
名稱:種分類
欄位:種小名
   中文俗名
   英文俗名
   Node reference---指到A內容類型

接著打算用views 列出屬,然後每個屬之後將所屬的種的學名顯示出來,假想圖如下:

由於學名是由「屬名_英文」+「種小名」組成的,但是這兩個欄位分屬於不同的內容類型,views無法JOIN這兩個內容類型,因此如果我篩選A內容類型,就無法顯示B內容類型的的「種小名」欄位;如果一次篩選A、B內容類型,兩者的顯示會變成下圖的樣子:

另外,若用View field 配合view A 內嵌veiw B(圖三),看起來雖然有點像,但是右邊「屬名_英文」還是無法顯示...

試過Node relativity這個模組,雖然可以決定父子關係,但是父節點中還是無法顯示子節點,反之亦然...

希望各位能夠提供一些建議,感恩!!

附加檔案大小
Image icon question2.gif14.18 KB
Image icon question3.gif8.62 KB
Image icon question1.gif13.02 KB

感謝danny!目前已成功讓屬分類的「屬名_英文」出現在種分類中了!方法如下:

===================前面提到的兩個內容類型===================

A 內容類型
名稱:屬分類
欄位:屬名_中文
   屬名_英文
   屬下分類群

B 內容類型
名稱:種分類
欄位:種小名
   中文俗名
   英文俗名
   Node reference---指到A內容類型,此一Node reference欄位命名為「reference屬分類」

===================前面提到的兩個內容類型end===================

1.已知每個種都有Node reference到屬分類,例如「長葉茅膏菜」、「阿帝露毛氈苔」都是「茅膏菜屬」。

2.在種分類的view中,列出所有物種,呈現的欄位包括「屬名_英文」、「種小名」、「俗名」等...。其中「屬名_英文」因為不屬於種分類的欄位,因此目前是空白的。

3.在Relationships的地方選取「內容: reference屬分類」,將屬分類的內容加進來(圖一),下面「屬名_英文」的欄位便會出現可以選擇relationship的選項,選取之後「屬名_英文」就會出現了!。

-----------------------------------------------------------------------------------------------------------------------

但是接下來又有了新的問題...

上述方法在view裡面可以成功,但是如果想要利用Content Template,在種分類的頁面中顯示「屬名_英文」的話又要怎麼辦呢?

爬文後找到node_load似乎是可以解決的方法,但是卻不太會使用,已知種分類的資料表中有一個欄位是「field_species_sort_nid」,專門對應到屬分類的「nid」,也就是說只要根據這篇物種的「field_species_sort_nid」去對應屬分類資料表中的「nid」,就可以顯示屬分類的內容了!!

於是我就在template上面加了這一段...,不過感覺是錯誤百出...
<?php
$genus = node_load(array('nid' => $node->field_species_sort_nid));
echo $genus->field_genus_ch;
?>

可以請教一下該怎麼寫才能抓取資料嗎?用node_load當關鍵字爬文效果不太好,有請各位前輩給些建議了!感恩!

我想請問一下
我按照原PO大的步驟做了
可是東西沒顯示出來QQ

後來我發現原PO大在篩選器的地方
只有篩出一個內容類型
可是原本不是就是內容類型A和內容類型B
為什麼再篩選器只要選一個呢?

實在搞不太懂捏ˊ ˋ