如何:自定义内容查询 Web 部件的 RSS

上次修改时间: 2015年3月9日

适用范围: SharePoint Server 2010

当您将内容查询 Web 部件自定义为显示所需的字段和内容之后,可以将该 Web 部件设置为处理该内容的真正简单的整合 (RSS) 源。

本主题说明如何添加和自定义用于处理"内容查询 Web 部件"内容的 RSS 源:

  • 如何为"内容查询 Web 部件"启用 RSS 源

  • RSS 源 URL 的工作原理

  • 如何将 custom .xsl 文件用于"内容查询 Web 部件"RSS 源

  • 如何解决"内容查询 Web 部件"RSS 源的缓存问题

为内容查询 Web 部件内容启用 RSS 源

若要启用用于处理"内容查询 Web 部件"内容的 RSS 源,请编辑该 Web 部件并选中"启用源"复选框。启用该源后,单击 RSS 源图标在浏览器中预览源的内容。

了解 RSS 源 URL 的工作原理

了解如何为"内容查询 Web 部件"自定义 RSS 的一个关键点在于了解 RSS 源 URL 的各个部分及它们的交互方式。下面是 RSS 源 URL 的格式:**http://服务器名称/_layouts/feed.aspx?xsl=在 Web.config 文件中注册的 XSL 文件&web=Web 地址&page=GUID&wp=**GUID

源的 URL 包括指向 Feed.aspx 文件的路径,该文件从运行 Microsoft SharePoint Server 2010 服务器上的 _layouts 文件夹中的 Feed.xsl 文件中生成。Feed.aspx 文件查找正在发出 RSS 源的"内容查询 Web 部件",确定 Web 部件运行哪个查询,并使用 _layouts 文件夹中的 Feed.xsl 文件来生成 RSS 源 XML。

为每个参数指定的值提供 SharePoint Server 2010 处理 RSS 源所需的信息。

参数

说明

有效值

xsl

指向某个键的指针,该键用来标识 Web 部件用于生成 RSS 源的 Rss.xsl 文件

在 web.config 文件中注册的 .xsl 文件

Web

包含正在处理 RSS 源的"内容查询 Web 部件"的网站

相对于服务器的 URL

Page

包含正在处理 RSS 源的"内容查询 Web 部件"的页面

GUID

Wp

"内容查询 Web 部件"ID

GUID

其他 XSL 参数信息

"内容查询 Web 部件"的设计使得 RSS 源易于管理;SharePoint Server 2010 在 web.config 文件中注册每个 .xsl 文件。RSS 源 URL 中的 xsl 参数表示在路径 \Inetpub\wwwroot\wss\VirtualDirectories\portnumber\wpresources 中找到的 web.config 文件中注册的 .xsl 文件。在 web.config 文件的 <appsettings> 部分中注册 .xsl 文件后,Feed.aspx 文件即可使用该 .xsl 文件。

<appsettings>
   <add key="FeedXsl1" value="/Style Library/Xsl Style Sheets/Rss.xsl">
</appsettings>

FeedXsl1 的 key 值映射到 RSS 源 URL 中的 xsl 参数值 1。

/Style Library/Xsl Style Sheets/Rss.xsl 路径中的 value 值指向"样式库"中的 Rss.xsl 文件,默认情况下,SharePoint Server 2010 包括此样式库。

为内容查询 Web 部件启用 RSS 源

  1. 编辑"内容查询 Web 部件"。

  2. 展开"显示"部分,然后选择"启用源"复选框。

  3. 单击 RSS 源以在 Internet Explorer 中查看预览,并验证该源可以正常工作。

将自定义 XSL 文件用于"内容查询 Web 部件"RSS 源

可以执行以下任何一项操作,将自定义 .XSL 文件用于"内容查询 Web 部件"RSS 源:

  • 编辑默认 Rss.xsl 文件,此文件包含在 SharePoint Server 2010 中;这可确保所有"内容查询 Web 部件"使用同一个更新后的 Rss.xsl 文件来呈现源。例如,执行此操作可以使用采用 Atom 架构(而非 RSS 2.0 架构)的 Rss.xsl 文件,并将 Atom 用于网站集中的所有"内容查询 Web 部件"。如果您拥有网站集,但不拥有安装了 SharePoint Server 2010 的服务器计算机,则应使用此方法。

  • 将自定义 Rss.xsl 文件添加到"样式库",并在 web.config 文件中注册此文件。使用此方法可以生成适用于特定"内容查询 Web 部件"的自定义 RSS 源。如果您需要对运行 SharePoint Server 2010 的服务器具有本地管理员权限以注册 .xsl 文件,需要支持多种编辑 Web 部件的方法,或者需要编辑 web.config 文件,请使用此选项。

编辑默认的 RSS.xsl 文件

  1. 导航到"样式库"。

  2. 编辑 Rss.xsl 文件以处理所需的 RSS 源数据。

  3. 保存更改。

将自定义 RSS .xsl 文件添加到样式库,并修改文件以供其使用

  1. 导航到"样式库"。

  2. 单击"上载",然后将自定义 .xsl 文件上载到"样式库"。可以将此文件上载到包含默认 Rss.xsl 文件的同一个文件夹中。

    备注

    如果您对"样式库"中的 .xsl 文件不具备访问权限,则可以通过编辑与 Web 部件定义 (.wpd) 文件关联的 ItemXslLink.xsl 文件,来自定义"内容查询 Web 部件"。

  3. 编辑 web.config 文件,为在步骤 2 中添加的文件添加新的 <appSettings> 条目,然后保存更改。

    <appSettings>
    ...
       <add key="FeedXsl2" value="/Style Library/Xsl Style Sheets/Rss-custom.xsl" />
    ...
    </appSettings>
    
  4. 通过复制 ContentQueryMain.xsl 文件并将副本上载到"样式库",修改为"内容查询 Web 部件"处理 RSS 源的 .xsl 文件。

  5. 编辑 ContentQueryMain.xsl 文件的副本并更改以下代码。删除以下代码:

    <xsl:variable name="FeedUrl1" select="concat($SiteUrl,$FeedPageUrl,'xsl=1&amp;web=',$WebUrl,'&amp;page=',$PageId,'&amp;wp=',$WebPartId)" />
    

    并将其替换为以下代码:

    <xsl:variable name="FeedUrl1" select="concat($SiteUrl,$FeedPageUrl,'xsl=2&amp;web=',$WebUrl,'&amp;page=',$PageId,'&amp;wp=',$WebPartId)" />
    
  6. 通过编辑"内容查询 Web 部件"属性(该属性确定使用哪个 Main.xsl 文件)来验证"内容查询 Web 部件"是否正在使用 ContentQueryMain.xsl 文件的副本。

    1. 在页面上查找"内容查询 Web 部件",然后将其导出。

    2. 编辑 MainXslLink 属性。删除以下代码:

      <property name="MainXslLink" type="string" />
      

      并将其替换为以下代码:

      <property name="MainXslLink" type="string">/Style Library/XSL Style Sheets/ContentQueryMain-custom.xsl</property>
      
    3. 保存更改,并导入"内容查询 Web 部件"。

解决"内容查询 Web 部件"RSS 源的缓存问题

当使用"内容查询 Web 部件"RSS 源时,您首次单击的"内容查询 Web 部件"的 RSS 源可能意外地持续显示,使您无法订阅和查看新源或已更新的源。

这是因为"内容查询 Web 部件"继承的"数据表单 Web 部件"缓存生成的缓存密钥与为动态创建的 Web 部件生成的缓存密钥相同(即使 xsl 属性不同)。因此,"内容查询 Web 部件"会重复使用来自首次加载页面时的缓存源数据。

解决"内容查询 Web 部件"RSS 源的缓存问题

  1. 在路径 Program Files\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS 中创建 Feed.aspx 文件的副本,然后将其分别重命名为 Feed1.aspx、Feed2.aspx 等等。

  2. 编辑 Rss.xsl 文件,然后将 xsl 参数更改为指向各自的源编号。例如,对于 Feed1.aspx,设置为 xsl=1;对于 Feed2.aspx,设置为 xsl=2。

请参阅

任务

如何:使用自定义属性自定义内容查询 Web 部件

如何:在内容查询 Web 部件中显示自定义字段

如何:自定义内容查询 Web 部件的 RSS