SharePoint 検索のカスタマイズ 5 (作成者= ログインユーザーでフィルタ表示 (2))

検索カスタマイズシリーズもとうとう最終回になりました。シリーズ4回目で作成した Web パーツを検索結果ページに追加し、さらにスタイルシートをカスタマイズすることで、作成者=ログインユーザーで絞り込んだ検索結果を表示するよう設定を行う方法です。

Web パーツの追加、削除

1. 検索センターサイトを開きます。

2. 追加した [作成したドキュメント] タブを開き、任意のキーワードを入力し検索します。

3. 検索結果ページが表示されたら、[サイトの操作] – [ページの編集] をクリックします。

4. [主要な検索結果] Web パーツを閉じます。

5. 最下部領域の [Web パーツの追加] をクリックし、シリーズ4 (前の投稿) で作成した [主要な検索結果UserID] Web パーツを追加します。

6. [検索の統計] Web パーツを閉じます。

検索結果ページで、結果を表示するための [主要な検索結果] Web パーツをカスタマイズしたものに差し替え、さらに [検索の統計] Web パーツを削除しました。[検索の統計] Web パーツには検索結果の件数が表示されるため削除しました。実際の検索結果から作成者が自分のものに絞り込んで表示を行うため、検索結果件数と表示されている件数はもちろん数が変わります。ユーザーにとってはややこしいだけなので表示させないことにします。

カスタマイズ Web パーツの設定変更とスタイルシート編集

1. [主要な検索結果UserID] Web パーツで、[編集] – [共有 Web パーツの変更] をクリックします。

2. [その他] カテゴリを展開し、[範囲] に利用したい検索範囲の名前を入力します。(シリーズ2の「SharePoint 検索のカスタマイズ 2」の際に作成した [ドキュメントライブラリ] を指定)

3. [データ ビューのプロパティ] カテゴリにある、[XSL エディタ] ボタンをクリックします。

4. 新しいウィンドウで XSL エディタが開くので、中のスタイル定義をすべて削除し、以下のスタイル定義を記述し、[OK] をクリックします。

<xsl:stylesheet version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime&quot; xmlns:asp="http://schemas.microsoft.com/ASPNET/20&quot; xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer&quot; xmlns:xsl="http://www.w3.org/1999/XSL/Transform&quot; xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal">
   <xsl:output method="html" indent="no"/>
  
<xsl:decimal-format NaN=""/>
  
<xsl:param name="dvt_apos">'</xsl:param>
  
<xsl:param name="UserID"/>
  
<xsl:variable name="dvt_1_automode">0</xsl:variable>
   <xsl:template match="/" xmlns:asp=http://schemas.microsoft.com/ASPNET/20 xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer&quot; xmlns:SharePoint="Microsoft.SharePoint.WebControls">
     
<xsl:call-template name="dvt_1"/>
  
</xsl:template>
  
<xsl:template name="dvt_1">
     
<xsl:variable name="dvt_StyleName">Table</xsl:variable>
     
<xsl:variable name="Rows" select="/All_Results/Result"/>
     
<table border="0" width="100%" cellpadding="2" cellspacing="0">
        
<tr valign="top">
           
<xsl:if test="$dvt_1_automode = ‘1’" ddwrt:cf_ignore="1">
              
<th class="ms-vh" width="1%" nowrap="nowrap"></th>
           
</xsl:if>
           
<th class="ms-vh" nowrap="">ファイル名</th>
           
<th class="ms-vh" nowrap="">作成者</th>
           
<th class="ms-vh" nowrap="">ファイルの場所</th>
           
<th class="ms-vh" nowrap="">作成日</th>
        
</tr>
        
<xsl:call-template name="dvt_1.body">
           
<xsl:with-param name="Rows" select="$Rows"/>
        
</xsl:call-template>
     
</table>
  
</xsl:template>
  
<xsl:template name="dvt_1.body">
     
<xsl:param name="Rows"/>
     
<xsl:for-each select="$Rows">
        
<xsl:call-template name="dvt_1.rowview"/>
     
</xsl:for-each>
   </xsl:template>
   <xsl:template name="dvt_1.rowview">
      <xsl:if test="normalize-space(author) = $UserID">
         <tr>
            <xsl:if test="position() mod 2 = 1">
               <xsl:attribute name="class">ms-alternating</xsl:attribute>
            </xsl:if>
            <xsl:if test="$dvt_1_automode = ‘1’" ddwrt:cf_ignore="1">
               <td class="ms-vb" width="1%" nowrap="nowrap">
                  <span ddwrt:amkeyfield="" ddwrt:amkeyvalue="string($XPath)" ddwrt:ammode="view"></span>
               </td>
            </xsl:if>
            <td class="ms-vb">
               <a href="{url}"><xsl:value-of select="title" /></a>
            </td>
            <td class="ms-vb"><xsl:value-of select="author" /></td>
            <td class="ms-vb"><xsl:value-of select="url" /></td>
            <td class="ms-vb"><xsl:value-of select="write" /></td>
         </tr>
      </xsl:if>
   </xsl:template>
</xsl:stylesheet>

5. Web パーツの設定変更画面で、[OK] をクリックし、さらに [発行] をクリックします。

これでできあがり♪

動作確認を行って、すべてのサイトのドキュメント ライブラリから自分が作成したドキュメントだけが検索結果として表示されていることを確認します。

clip_image002

これで検索カスタマイズシリーズは終了です。

今回の事例のように SharePoint 開発を行うには、スタイルシートの知識が必要になる場合が多々あります。スタイルシートについてももっと勉強しなくてはいけないな、とあらためて思いました。

奥田 理恵

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中