2012-12-11 22 views
4

我們正在讓我們的果園網站內容的RSS,然後用C#堅持下來到我們自己的數據庫,解析它。爲此,我們需要RSS來抓取我們自定義類型的每個字段。現在,當我得到投影的RSS時,我們得到標題,描述等的默認元素,但不包括類型的字段。RSS - 烏節

在另一方面,使用導入/導出模塊,我能得到一個自定義類型的所有領域,但該模塊不支持查詢(這就是爲什麼我們使用的預測)。

有沒有什麼辦法讓一個類型的所有領域的RSS源,但使用的查詢/投影?

回答

5

沒有這樣做自動的方式,但你可以編寫自己的模塊來實現的。

你需要做的是添加一個實現Orchard.Core.Feeds.IFeedItemBuilder接口的類。接口本身只有一個方法需要實現 - void Populate(FeedContext context)

這裏有一個如何實現此方法的代碼片段:

public void Populate(FeedContext context) 
{ 
    context.Response.Contextualize(
     c => { 
     foreach (var feedItem in context.Response.Items.OfType<FeedItem<ContentItem>>()) 
     { 
      var contentItem = feedItem.Item; 
      foreach (var part in contentItem.Parts) 
      { 
      // extract data you're interested in from parts 
      foreach (var field in part.Fields) 
      { 
       // extract data you're interested in from fields 
       feedItem.Element.SetElementValue("description", "Text to output to RSS"); 
      } 
      } 
     } 
     }); 
} 

context.Response.Items認爲,將被輸出到RSS的所有項目。這裏棘手的部分是要知道哪些數據要輸出到RSS,因爲有許多不同的領域有很多不同的部分。他們都有不同的屬性名稱,你想輸出到RSS。

因此,我的建議是測試contentItem在上面的例子中是你的自定義類型。如果是,則將其轉換並使用您的自定義字段名稱來填充feedItemdescription

+1

謝謝,非常有用! – Vladimirs

+0

沒問題。我很高興我能幫助你! –