您在這裡

個人架站分享 - bobju's 音樂鑑賞誌

bobju's 的頭像
bobju 在 2010-03-21 (周日) 20:08 發表

嗨嗨! 大家安安:

bobju 接觸 Drupal 也已過了7週了, 這段時間當中, 很用心地透過各種網路上可以取得的相關文件去了解 Drupal, 也希望往後就採用 Drupal 當成內容管理的主架構.

由於 Drupal 這個架構有一定的深度及廣度, 加上各種應用模組上去, 可算是相當龐大的, 要學到駕輕就熟肯定非短期可及, 但又不能等到'通通都學全了', 才拿來用. 所以為了學到哪用到哪, 同時避免學習失焦, 目前僅鎖定在一個小主題上的應用: 利用CCK及Views建立一個個人資料方便快速的查詢架構. 架這個站的主要目的, 是驗收這段期間的學習成果啦.

這個 bobju's 音樂鑑賞誌 用來管理多媒體資料, 並提供一個快速關鍵字查詢的機制, 以表格方式呈現查詢結果. 這不是一個深思熟慮後才架的網站, bobju當做是邊學邊架的一個的範例, 日後隨著對於 Drupal 的深入了解, 再應用到這個網站上將使其日益成熟. 目前當是有很多不周到的地方, 很希望各位大大不吝賜教, 予以鞭策. XD

跟這次主題相關的應用模組有:

CCK: 用來建立 光碟, 專輯, 歌曲, 演唱者, 四種內容類型, 以及四者之間的關聯結構.

Views: 用來設定查詢頁面, 以及查詢結果報表.

Viewfield: 用來設定當使用者檢視內容節點時, 也連帶地能夠檢視到關聯的內容節點.

Node Import: 資料移轉用的, 把以前的舊資料匯出成為CSV格式, 再餵進來現在的內容架構裏.

p.s. 這個網站上查得到的資料全部都是10年前的, 在此僅是拿來當做架站的內容材料, 不是在"流通"這些檔案喔! 事實上這些光碟早就已經全部"遺失"了.

嗨嗨..大魔王, 感謝您的回應~

內容關聯的部份, bobju只是單純地用CCK來建, 有用到"node reference", 但完全沒動到程式碼. 做法在這兒

另外在處理檢視內容節點時, 帶出所有相關的參考節點的列表, 是參考了一項妙招, 之所以稱之為妙招, 是因為很多人都說好. XD 源自於reverse node reference的討論串: http://drupal.org/node/161867#comment-1086587, 這提供了一個直接從Views的設定達到目的的方法.

關於著作權問題, bobju也是有在注意, 以免不小心踩到地雷.
目前的想法是: 這網站既不提供歌曲檔案內容下載, 也不提供歌詞. 至於歌名的話, 可參考經濟部智慧財產局的這個連結 "至於書名或歌名,不受著作權法保護,因此引用書名或歌名,不會發生觸犯著作權法的問題。" 應當是沒問題. 細節會再深入了解.

歡迎大家不吝賜教, 交流心得囉~

bobju想請問哦~你如果有一個歌手時,當你建了兩個專輯都是for一個歌手時,你這關聯會自動產生嘛?
因為歌手是一種內容類型~然後它對應許多專輯時,這個reverse node reference能自動產生關聯嘛?

這估是指如果在新增一個後歌手之後去增加一個(node_refence)的field
然後再去手動對關聯那機張專輯?

我目前做一估視訊網站,然後在視訊網站這內容類型中的cck field中新增加一個node_refence 這裡要去關聯另一估內容類型的講師名單~
然後當建立一個視訊網站時,可以去關聯它是那估講師的~ (在這裡的話使用者可以不必一直重覆建置講師名單~如果已經有現存的資料就能關聯)

但相反~若是講師要去關聯它所有的上過的視訊資料時(不太能一個個去找,若手動去找關聯去勾選的話~當資料多時,就麻煩了)
不知你有無遇到跟我相同問題呢?

心中常存善解、包容、感思、知足、惜福 (靜思語錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

bobju想請問哦~你如果有一個歌手時,當你建了兩個專輯都是for一個歌手時,你這關聯會自動產生嘛?
我的做法是: 在"歌曲"當中建立兩個node reference, 一個去關聯"專輯", 另一個去關聯演唱者. 這樣就可以了. 如果需要在撈出特定的"歌手"的"專輯"列表, 則可以在Views裏的Relationships當中做設定.

對了, 在用node reference建立歌曲對專輯的關聯時, "必填"要打勾, 且數量選項要設為1. 這是因為在我所規劃的資料邏輯當中, 一首歌曲"必須且僅許"隸屬於一個專輯. 這一點在此要強調是因為: 對於數量選項設為1跟不是1, CCK儲存欄位資料的結構似乎是不同的, 這或許對於相關的外掛模組的作業邏輯會有影響. 不過這個太底層了, 要花很多時間去摸索跟try, 而且也還不確定, 就不做太深入的拆解了.

以上僅就抓住這個原則: 歌曲對專輯的關聯, 是"必填"且"多對一", 所以在歌曲對專輯的node reference的設定就要”必填”打勾, 數量選項設為1, 被參考的內容類型就只勾”專輯”.

因為歌手是一種內容類型~然後它對應許多專輯時,這個reverse node reference能自動產生關聯嘛?
我最後並沒有採用reverse node reference這個模組. 原本是希望透過它能夠在檢視一個"專輯"節點時, 也帶出關聯到它的"歌曲"列表, 但在嘗試過程當中沒有做出預期的效果, 它能夠帶出歌曲名稱, 卻無法建一步地帶出相關欄位, 不確定該如何做到, 就先不用了. 後來是以http://drupal.org/node/161867#comment-1086587
的方法來達到"檢視專輯, 帶出歌曲列表"的預期效果.

這估是指如果在新增一個後歌手之後去增加一個(node_refence)的field
然後再去手動對關聯那機張專輯?

沒有, 就上述的歌曲對專輯而言, 只需在(內容類型:歌曲)當中, 透過node reference"單向"關聯到(內容類型:專輯)即可.
至於以後要新增一個專輯當中的所有歌曲時, 先新增一個專輯的內容節點, 然後再新增所有隸屬於此專輯的歌曲, Drupal在使用者新增歌曲時自動拉出已經存在的專輯選單給選.

我目前做一估視訊網站,然後在視訊網站這內容類型中的cck field中新增加一個node_refence 這裡要去關聯另一估內容類型的講師名單~
然後當建立一個視訊網站時,可以去關聯它是那估講師的~ (在這裡的話使用者可以不必一直重覆建置講師名單~如果已經有現存的資料就能關聯)

是呀, 看來過程跟上述的歌曲對專輯的關聯一樣, 在此就是視訊網站對講師的關聯.

但相反~若是講師要去關聯它所有的上過的視訊資料時(不太能一個個去找,若手動去找關聯去勾選的話~當資料多時,就麻煩了)
不知你有無遇到跟我相同問題呢?

只要建立"視訊網站對講師"的單向關聯就行了. 因為就底層的SQL而言, 只要有單向的資料關聯就能夠撈出雙方的對應關係. 不用雙向都建, 雙向都建反而可能造成混淆. 至於Drupal的外掛模組(CCK, Views, viewfield, reverse node reference, etc..)們, 雖知其大致上的用途, 但實際上哪些適合用在什麼樣的資料關聯的結構上, 如何設定才能夠達到哪些需求? 還是需要花時間去try, 或是有經驗者的指引才行.

目前我也只能先摸索出可以達到特定需求的樣式(ex: 歌曲的專輯是必填且唯一, 專輯的光碟是必填且唯一, 至於歌曲的演唱者則是可複數(一首歌有兩位以上的歌手合唱), 如何在單一欄位中顯示多位演唱者? 暫沒研究, 目前在內容節點的建立上仍保持1對1), 太多樣的也沒把握. 希望這個對大魔王能夠有點參考意義. XD