您在這裡

多個站點共用同樣的內容類型資料?

tky's 的頭像
tky 在 2008-03-19 (三) 12:11 發表

最近在維護不同網站的時候想到一個需求,就是如何讓多個站點能共用同樣類型的內容資料呢?
比如說,最常見的「網站連結」,多是一些對外部網站的連結和資訊,如果幾個網站都是同樣類型的,比如說tky做的幾個哲學站,其實「網站連結」的內容就都是大同小異。

與其一個站一個站去更新、發布,tky想要找個法子可以利用rss之類的方式做到共同發布內容的效果。
比方說tky都是用link package這個模組來建立網站連結的,它會建立一個weblink的內容類型。
tky的目標是想要讓使用link package的不同網站共同發布同樣的weblink內容。

一開始想到的辦法是用views去撈出一個主要網站的weblink資訊並製作成rss,接下來是在其他的網站用feed之類的模組,自動去抓取這個rss後自動發布成weblink類型的node。不過後來發現feed模組的作法是把抓來的東西建立成一個叫作feed的內容類型,這樣就差強人意了。

想要用import/export api來做匯入匯出的動作,不過發現不是每個內容類型都可以做這樣的事情。weblink就是不行。

不曉得有沒有人有同樣的需求啊?可否建議一下用什麼樣的模組才能做到這個效果呢?

tky

社會書籤?應該是「社群」書籤吧?tky不想社群書籤的理由之一就是,你無法即時過濾掉你不要的或者不適合的連結。就算你用關鍵字去過濾,你怎知道其他人對同一個關鍵字的分類傾向呢?

另外,TKY並不只想共用weblink,還想共用其他類型的內容,比如說學術公告和活動的類型。
tky昨個兒找了一下,發覺Feedapi和Leech兩個模組符合tky的需求。
試用了一晚上,發現兩者雖都號稱可以將rss feed自動生成你想要content-type nodes,但是用Leech卻不能真正的辦到這一點。生出來的nodes往往沒有content -type。

後來就專注使用Feedapi,搭配Feed mapping,想說把兩個站的cck欄位做個mapping。
不過,雖然Feedapi會正確地產生tky想指定的content-type nodes,但是能夠mapping的部分卻幾乎沒有。
原因在於就算兩個網站的event type都有同樣的預設欄位和cck欄位,但是提供rss的drupal站點卻不會生成帶有cck欄位的rss檔案。甚至event所生成的開始時間和結束時間欄位內容,也只會變成內容的一部分,而無法對應到抓取站上的event欄位。

這離tky的理想還很遠啊。雖然說tky可以將抓取過來的nodes依照其內容進行重新的整理,但是這沒有達到有效率的效果。唯一省到的東西,就是自己去資料網站一一複製、貼上的動作而已。

tky

tky

RSS本身的限制

所以,多個網站要共用文章,其實不難
但要完全sync up結構,就真的不容易了
看什麼樣的需求吧...有些時候,需求並不是那麼大
技術只能雞肋的解決一點渴望,但沒辦法解決全部
--
from open mind to open source~

--
from open mind to open source~

是啦,如果rss + feedapi真得就能夠達到tky的理想,那麼一個新的議題就會出現了:如何避免別的Drupal網站把自己的網站抄光光。現在抄襲內容大家就氣呼呼了,往後能夠透過幾個模組就整個給你連filed都copy過去,直接生成一模一樣的cck node,大家恐怕會更抓狂吧?

在這次測試rss + feedapi的時候,TKY發現一個重點給大家參考一下:如果你打算用feedapi和其他的網站共用資料,cck欄位的設計也很重要。tky之前有些content type沒有用預設的文字框做為輸入內容的欄位,而自訂了cck的文字框欄位來用。當初想說又沒差,現在才發現,如果你是用運Drupal內建的rss發布模組,那麼你發布feed裡頭就只會有標題的資訊而沒有內容!XD

想要讓你的feed資訊內容有自訂的cck欄位,比如說「截止時間」或者「種類」等等,只能透過content templet這個模組。你可以讓你的feed看來就像你的node一樣,這樣共用的東西至少還可以看。(雖然說filed仍舊無法共用)

如果feedapi可以再進一步挖出feed中的不同欄位內容,對應到cck的欄位,或者說有更好的rss輸出的模組,能夠讓使用者在語法上選擇要輸出特定的語法(比如說增加[option]的部分),那tky的理想才有望。

tky

tky