【问题标题】:RSS of custom types--Orchard自定义类型的RSS--Orchard
【发布时间】:2014-03-28 04:48:07
【问题描述】:

我们正在考虑获取 Orchard 网站上内容的 RSS,然后使用 C# 对其进行解析,以将其粘贴到我们自己的数据库中。为此,我们需要 RSS 来获取我们自定义类型的每个字段。现在,当我获得投影的 RSS 时,我们获得了标题、描述等的默认元素,但没有获得类型的字段。

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

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

【问题讨论】:

    标签: rss orchardcms


    【解决方案1】:

    没有自动执行此操作的方法,但您可以编写自己的模块来执行此操作。

    你需要做的是添加一个实现Orchard.Core.Feeds.IFeedItemBuilder接口的类。接口本身只有一个方法你需要实现——void Populate(FeedContext context)

    下面是如何实现这个方法的代码 sn-p:

    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 是否属于您的自定义类型。如果是,请将其转换并使用您的自定义字段名称来填充 descriptionfeedItem

    【讨论】:

    • 没问题。很高兴能帮到你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多