如何:在Sharepoint Search XSL中使用查询字符串参数?

时间:2012-05-29 18:22:01

标签: xslt search sharepoint-2010 query-string

这是我第一次尝试处理XSL,所以请善待:)

我正在修改SharePoint 2010人员搜索结果页面 - 特别是“在组织浏览器中查看”行。我已将orgbrowser webpart添加到我们的主站点,并且不希望将用户引导到此链接的mysite。

以下是修改后的代码:

<a id="{concat($currentId, '_OrgBrowserLink')}" href="/search/pages/orgbrowser.aspx?accountname={string(accountname)}">&#187; <xsl:value-of select="$ViewHiearchyLabel" /></a>

上面的代码工作正常。我发现我在添加搜索结果querystring参数时遇到了问题。参数为“k”。

  • 我发现我无法追加“&amp;”符号(因为它最有可能是一个特殊的保留字符)。我试过“%26”,但这似乎搞乱了之前的accountname参数(我收到'用户未找到'相关ID错误)

  • 我似乎无法使用我对xsl如何工作的有限知识来获取查询字符串参数“k”。有人可以启发我吗?

全部谢谢

1 个答案:

答案 0 :(得分:1)

很遗憾,人物搜索结果网络部件不会将当前网址作为参数传递。但是,它确实传递了包含当前查询字符串的其他几个URL参数。因此,解决方案是使用其中一个,解析'k'参数中的值并将其附加到URL。

我使用了$ NameSortUrl XSL参数。

我通过使用substring-before和substring-after函数并将值保存在变量中来解析'k'参数的值:

<xsl:variable name="kVal" select="substring-before(substring-after($NameSortUrl, 'k='), '&amp;')"/>

然后我将这个值附加到网址上,如下所示:

<a id="{concat($currentId, '_OrgBrowserLink')}" href="/search/pages/orgbrowser.aspx?accountname={string(accountname)}&amp;k={$kVal}">

请注意使用HTML编码来获取网址(&amp;)中的&符号。

希望将来对其他人有用。