您在這裡

如何在node中以viewfield顯示所refer的nodes view?

tky's 的頭像
tky 在 2009-08-26 (三) 15:00 發表

各位好:
這個問題有點難度。

最近在做個書籍資料管理的網站,需要的功能之一包括了要建立不同書籍版本的關聯。
比方說同一本外文書籍有可能因為不同的出版社翻譯出版而有不同的版本,就需要將不同版本關聯起來。

tky是以node reference做關聯,可以在node A中顯示所關聯的node B的連結。
不過這種顯示方式有點太陽春,希望能夠進一步的顯示出node B裡頭的封面與title link資料。
這就會需要使用viewfield。

使用viewfield的一個前提就是要先設定一個view,過濾出同類型的node並設定argument為node id;然後在viewfield裡頭,設定node reference id作為預設的argument。這樣的好處就是,能夠在node A中顯示出node B的view欄位,而非僅是title link。也不會只在node B中才能看到node A的相干欄位。

tky所遇到的困難在哪兒呢?就是tky的node reference欄位可以設定多值、連結到多個node去,但是viewfiled所能設定的預設argument似乎只能讀取到第一個欄位中的node reference id。
如此一來,當一本書已經設定有多個相同版本的node reference時,viewfield卻仍只能夠顯示出第一本相同版本的書籍資料。

tky知道這有點難解,但還是想知道有沒有其他的解法。

tky

感謝Charles,一切的謎底都解開了!

成功測試了Node reference views,看出來它的用途:在node A中,以view的方式顯示A所連結到的node B、C、D,是一對多的關係。
設定view的方式是以nid作為argument(就是複製預設的field view、改改名字就可以了)。

現在一想,其實viewfield的用途則是反向的:在node A中,以view顯示透過noderef連結到A的node B、C、D,是多對一的關係。
設定view的方式則是以noderef id作為argument(這個要自己來)。
難怪TKY怎麼弄都弄不出想要的效果。

怎麼還沒有模組出面整合兩者呢?

tky

tky

藉這個討論串想請教一下:
假設有一個歌曲管理資料庫, 其資料關聯架構如下圖所示:

簡單講, 就是:
1張光碟裏有n個專輯,
1個專輯裏有n首歌曲,
1首歌曲當中可以有0~n個演唱者.

目前已建立起四種內容類型: 歌曲, 專輯, 光碟, 以及演唱者,
並在各自的內容類型當中, 透過CCK新增node reference欄位, 將這些內容類型關聯起來:
專輯 - node reference to -> 光碟 (by 專輯.CD_ID)
歌曲 - node reference to -> 專輯 (by 歌曲.Album_ID)
歌曲 - node reference to -> 演唱者 (by 歌曲.artist_ID)

接著再透過Views模組, 初步設定成如下的頁面(表格輸出形式), 名為"歌曲列表":


意即: 以歌曲為主, 順便帶出其所屬的專輯, 專輯所屬的光碟, 以及該歌曲的所有演唱者.
補充: 這個頁面是設定成僅以歌手名稱為查詢歌曲的關鍵字條件.

目前我遇到的問題是:
1 如果一首歌曲當中有2位以上的演唱者, 那麼可有辦法做出同一欄當中呈現所有演唱者的效果?
例如假設有3位演唱者: aiko, miki, hitomi , 則3位名稱都在"演唱者"這一欄裏呈現, 而非分成3列.

2 在頁面上, 要做出"使用者快速檢索"的ui, 除了summary外, 是否還有其它檢索方式可用?
例如select box, 或是 可輸入關鍵字的文字區塊.

3 假設這個”歌曲列表”的頁面, 只提供"演唱者名稱”做為關鍵字檢索, 那麼user在輸入關鍵字查詢時,
這個頁面除了呈現符合條件的歌曲列表表格外, 是否還能夠在這個頁面上嵌入一個"演唱者簡介"的區塊呢?

請提供給我一個參考方向, 細節我再來練功摸索. XD

目前在學習 CCK & Views 的應用, 小小的學習心得:
1 CCK的資料結構有點小複雜, 先把應用面搞懂即很夠用, 以後有機會再接觸程式面.
2 Views這個工具果然非常強大, 透過它, 很多繁瑣費時的撈資料套表的coding time都可以省下來了.

先感謝大家囉~