自定义类型的RSS - Orchard

Ski*_*erm 4 rss orchardcms

我们正在寻找在Orchard站点上获取内容的RSS,然后使用C#解析它以将其粘贴到我们自己的数据库中.为此,我们需要RSS来获取自定义类型的每个字段.现在,当我获得投影的RSS时,我们得到标题,描述等的默认元素,但不是类型的字段.

另一方面,使用导入/导出模块,我能够获得自定义类型的所有字段,但模块不支持查询(这就是我们使用投影的原因).

有没有办法获得一个类型的所有字段的RSS提要,但使用查询/投影?

Iva*_*rić 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");
            }
          }
        }
      });
}
Run Code Online (Sandbox Code Playgroud)

context.Response.Items保存将输出到RSS的所有项目.这里棘手的部分是知道要输出到RSS的数据,因为有许多不同的部分有许多不同的字段.并且它们都有您想要输出到RSS的不同属性名称.

因此,我的建议是测试contentItem上面的示例中是否属于您的自定义类型.如果是,请投射它并使用您的自定义字段名称来填充descriptionfeedItem.