这是我第一次尝试处理XSL,所以请善待:)
我正在修改SharePoint 2010人员搜索结果页面 - 特别是“在组织浏览器中查看”行。我已将orgbrowser webpart添加到我们的主站点,并且不希望将用户引导到此链接的mysite。
以下是修改后的代码:
<a id="{concat($currentId, '_OrgBrowserLink')}" href="/search/pages/orgbrowser.aspx?accountname={string(accountname)}">» <xsl:value-of select="$ViewHiearchyLabel" /></a>
上面的代码工作正常。我发现我在添加搜索结果querystring参数时遇到了问题。参数为“k”。
我发现我无法追加“&amp;”符号(因为它最有可能是一个特殊的保留字符)。我试过“%26”,但这似乎搞乱了之前的accountname参数(我收到'用户未找到'相关ID错误)
我似乎无法使用我对xsl如何工作的有限知识来获取查询字符串参数“k”。有人可以启发我吗?
全部谢谢
答案 0 :(得分:1)
很遗憾,人物搜索结果网络部件不会将当前网址作为参数传递。但是,它确实传递了包含当前查询字符串的其他几个URL参数。因此,解决方案是使用其中一个,解析'k'参数中的值并将其附加到URL。
我使用了$ NameSortUrl XSL参数。
我通过使用substring-before和substring-after函数并将值保存在变量中来解析'k'参数的值:
<xsl:variable name="kVal" select="substring-before(substring-after($NameSortUrl, 'k='), '&')"/>
然后我将这个值附加到网址上,如下所示:
<a id="{concat($currentId, '_OrgBrowserLink')}" href="/search/pages/orgbrowser.aspx?accountname={string(accountname)}&k={$kVal}">
请注意使用HTML编码来获取网址(&amp;)中的&符号。
希望将来对其他人有用。