0

これはXSLを扱う最初の試みなので、親切にしてください:)

SharePoint 2010のユーザー検索結果ページ(具体的には「組織のブラウザーで表示」行)を変更しています。orgbrowser Webパーツをメインサイトに追加しましたが、このリンクのmysiteにユーザーを誘導したくありません。

変更されたコードは次のとおりです。

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

上記のコードは正常に機能します。ただし、検索結果のクエリ文字列パラメーターの追加に問題があることがわかりました。パラメータは「k」です。

  • 「&」記号を追加できないことがわかりました(おそらく特別な予約文字であるため)。「%26」を試しましたが、その前にaccountnameパラメーターが混乱しているようです(「usernotfound」相関IDエラーが発生します)

  • xslがどのように機能するかについての知識が限られているため、クエリ文字列パラメータ「k」を取得できないようです。誰かが私を教えてもらえますか?

皆さんありがとう

4

1 に答える 1

1

残念ながら、People Search Results Web パーツは現在の URL をパラメーターとして渡しません。ただし、現在のクエリ文字列を含む他のいくつかの URL パラメーターを渡します。したがって、解決策は、それらのいずれかを使用し、「k」パラメーターの値を解析して、URL に追加することです。

$NameSortUrl XSL パラメータを使用しました。

substring-before 関数と substring-after 関数を使用して変数に値を保存することで、「k」パラメーターの値を解析しました。

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

次に、この値を次のように URL に追加しました。

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

URL のアンパサンド (&) を取得するために HTML エンコーディングを使用していることに注意してください。

うまくいけば、これは将来誰かに役立つでしょう。

于 2012-05-30T17:25:35.340 に答える