最近在弄一個物種百科的資料庫,但是發現用views無法將種屬分類結合在一起...,問題敘述如下:
分別建立兩個內容類型來放置種、屬資料
A 內容類型
名稱:屬分類
欄位:屬名_中文
屬名_英文
屬下分類群
B 內容類型
名稱:種分類
欄位:種小名
中文俗名
英文俗名
Node reference---指到A內容類型
接著打算用views 列出屬,然後每個屬之後將所屬的種的學名顯示出來,假想圖如下:
由於學名是由「屬名_英文」+「種小名」組成的,但是這兩個欄位分屬於不同的內容類型,views無法JOIN這兩個內容類型,因此如果我篩選A內容類型,就無法顯示B內容類型的的「種小名」欄位;如果一次篩選A、B內容類型,兩者的顯示會變成下圖的樣子:
另外,若用View field 配合view A 內嵌veiw B(圖三),看起來雖然有點像,但是右邊「屬名_英文」還是無法顯示...
試過Node relativity這個模組,雖然可以決定父子關係,但是父節點中還是無法顯示子節點,反之亦然...
希望各位能夠提供一些建議,感恩!!
附加檔案 | 大小 |
---|---|
question2.gif | 14.18 KB |
question3.gif | 8.62 KB |
question1.gif | 13.02 KB |
Re: 如何JOIN兩個內容類型的欄位?
用 views 裏面的 relationships 將 node reference 的關係帶進來, 就可以將兩個 content type 連在一起了。
Re: 如何JOIN兩個內容類型的欄位?
感謝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當關鍵字爬文效果不太好,有請各位前輩給些建議了!感恩!
Re: 如何JOIN兩個內容類型的欄位?
試試使用 Viewfield ( https://drupal.org/project/viewfield ) 將您建好可以動的 View 當成欄位來顯示?
Re: 如何JOIN兩個內容類型的欄位?
我想請問一下
我按照原PO大的步驟做了
可是東西沒顯示出來QQ
後來我發現原PO大在篩選器的地方
只有篩出一個內容類型
可是原本不是就是內容類型A和內容類型B
為什麼再篩選器只要選一個呢?
實在搞不太懂捏ˊ ˋ