2012-06-06 56 views
3

我有一個類似「events」和「news」的內容類型的Drupal 7網站。如何創建一個在Drupal 7網站之間傳輸節點的源?

我希望將這些內容類型的節點自動導入到其他網站。

我在'客戶'網站上瀏覽Feeds,XPath並在服務器端瀏覽RSS字段',但是我意識到會有文件等內容類型字段出現問題......任何建議?我希望能夠在其他網站上爲此內容創建新視圖。

P.S.內容類型在網站之間是相同的(但是如果你的解決方案包含其他內容,他們不需要)。

+0

如果兩個站點都在同一個平臺(Drupal)和同一個版本(7)中,我想知道爲什麼你試圖使用提要或其他可公開訪問的方式來傳輸內容,而像Deploy這樣的模塊可以很好地完成這項工作。 –

+0

部署是一次性的過程,我們需要的是實時同步:/ – Squawk

回答

1

您可能會用servicescontent Distribution獲得更多成功。 RSS源不太適合傳輸語義數據。他們高度關注文章清單,並且通常缺乏諸如「活動開始日期」等信息。

服務允許您在server-drupal-site上公開服務,將節點公開爲例如。 RESTfull json。然後,客戶端drupalsite可以使用服務和內容分發從服務器導入節點。

也就是說,服務套裝插入到視圖中,並且非常沉重,龐大而複雜。如果你是大而複雜的項目過敏(像我),你可能會寫一個簡單的模塊的更好:

  • 事件服務:一個20+線模塊,抓住從數據庫中的事件,並提出他們作爲json。
  • news-service:一個10+行模塊,用於獲取新聞節點列表並將它們呈現爲json。
  • events-client:一個小模塊(〜400-800行?),它在給定的url處吃所述的json並將它們變成節點。它將在節點表旁邊保留一些UUID的註冊,以避免在上游更改節點時重新創建節點(而是找到關聯節點並更新它)。新聞客戶端:一個小型模組。同上。

編寫這樣的模塊是非常有意義的,因爲不是與記錄不當的視圖插件,圍繞服務等的複雜圖層打架,而是完全控制和充分理解。它也允許更好的調整和性能。

一個很大的缺點是Drupal更具體:CCK或Fields,決定了數據庫及其結構。當你的站點上一些微小的配置改變會打破你的模塊SQL查詢時,會有一點:突然之間你會突然拋出SQL錯誤,因爲Drupal決定重命名或移出一些表,列或引用。

+0

是的,這是我喜歡的解決方案。仍然使用RSS視圖,我處理了Feed,並將每個項目轉換爲具有自定義(而非)模塊的節點。雖然內部表示有問題,但我想我需要手動創建節點,並且不要讓「節點處理器」提要爲我做。 – Squawk

1

也許你可以通過創建將由客戶端使用的xml/json(服務器端)來共享數據。

服務是一個好方法。但我覺得它對於簡單的東西很複雜。

你可以做的是創建視圖,將輸出爲xml/json ...你可以通過在你的模塊/模板文件中執行預處理功能來做到這一點。

之後,客戶端(可能運行cron)將採取xml/json並以編程方式創建節點。

+0

是的,這將相當於RSS解決方案 - 可能更健壯一些,唯一的問題是由於複雜的內部表示,某些字段難以處理並且變成客戶端上的實際節點字段。 – Squawk

+0

你能指定你的意思是這些字段很難處理嗎?例子? – claire