先日実施した MOSS UI カスタマイズ のセミナーで検索ボックスのカスタマイズについてご質問がありました。セミナーのフォローアップを兼ね、どのようなカスタマイズが可能かをご紹介しておきます。
MOSS の検索ボックスのカスタマイズでは、マスターページ編集ではなく、フィーチャ定義ファイルを編集する必要があります。
編集すべきファイルは SharePoint ハイブ(%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\12) 内の TEMPLATE\FEATURES フォルダ内にあります。このフォルダ内の "OSearchBasicFeature" もしくは "OSearchEnhancedFeature" のどちらかのフォルダにある SearchArea.xml を編集します。ちなみに、OSearchBasicFeature フォルダは SharePoint Server 2007 Standard Edition 用、OSearchEnhancedFeature フォルダは SharePoint Server 2007 Enterprise Edition 用となっているようですので、ご利用になっている MOSS の Edition によって使い分けます。
SearchArea.xml には、検索ボックスで使用する画像ファイルや高度な検索リンクを表示するなどのさまざまなプロパティが定義できるようになっています。
このファイルを編集して、IISRESET を実行すると検索ボックスへの変更が反映されます。
*** "SearchArea.xml " の例 ************************************
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Control
Id="SmallSearchInputBox"
Sequence="25"
ControlClass="Microsoft.SharePoint.Portal.WebControls.SearchBoxEx"
ControlAssembly="Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">
<Property Name="GoImageUrl">/_layouts/images/gosearch.gif</Property>
<Property Name="GoImageUrlRTL">/_layouts/images/goRTL.gif</Property>
<Property Name="GoImageActiveUrl">/_layouts/images/gosearch.gif</Property>
<Property Name="GoImageActiveUrlRTL">/_layouts/images/goRTL.gif</Property>
<Property Name="UseSiteDefaults">true</Property>
<Property Name="FrameType">None</Property>
<Property Name="ShowAdvancedSearch">true</Property>
</Control>
</Elements>
********************************************************************
たとえば、ファイル内の "<Property Name="GoImageUrl">/_layouts/images/gosearch.gif</Property>" は検索ボックスに既定で表示されるアイコンを表示しています。
Property タグで設定できるプロパティの詳細については、次のサイトを参照してください。
http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.portal.webcontrols.searchboxex_members.aspx
ここでは、このうち主なプロパティをご紹介します。
「ドロップダウン ボックスの表示/非表示」
次のプロパティタグを追加します。
<Property Name="DropDownMode">表示方法</Property>
表示方法に "ShowDD" を指定するとドロップダウンボックスが表示されます。
"HideDD_useDefaultScope" を指定すると非表示になります。
「高度な検索リンクの表示/非表示」
<Property Name="ShowAdvancedSearch">true</Property> の true を false に変更すると「高度な検索」リンクは非表示になります。
「表示幅を変更する」
表示幅の変更には次のようなプロパティがあります。
- <Property Name="DropDownWidth">ドロップ ダウンの幅</Property>
- <Property Name="TextBoxWidth">検索テキスト ボックス幅</Property>
注意点
と以上のようにご紹介してきましたが、OSearchBasicFeature や OSearchEnhancedFeature は今後のサービスパックもしくはアップグレード時に上書きされる可能性があります。そのため、最もよいソリューションはこうしたフィーチャ(機能)をカスタムで実装することです。また、SearchArea.xml を直接編集するとサーバーファーム全体へ影響してしまいますが、フィーチャとして実装することで、Web アプリケーション単位でのカスタム実装が可能となります。
カスタム フィーチャを実装するには、まずは単純にコピーして必要な部分の名称などを変更すればよいです。ただ気をつけなければならないのが、SearchArea.xml 内のSequence 番号です。WSS の検索機能は、MOSS Standard がインストールされていればその機能によって上書きされ、さらに MOSS Enterprise がある場合はその検索機能で上書きされていくというように上書きされていくのですが、その優先度を示すのが Sequence 番号となっているようです。既定では次のように指定されています。数が少ない方が優先されるようです。
- 100 - WSS 3.0 (Features/ContentLightup/Controls/SearchArea.xml)
- 50 - MOSS 2007 Standard (Features/OSearchBasicFeature/SearchArea.xml)
- 25 - MOSS 2007 Enterprise (Features/OSearchEnhancedFeature/SearchArea.xml)
ですから、ご自分で作成したカスタムの設定を優先するには たとえば Enterprise Edition の場合は 25 よりも小さい数にする必要があります。
フィーチャについては、次のサイトが参考になります。
http://www.microsoft.com/japan/msdn/office/2007/cc263911.aspx
また、次のような研修もありますのでご参考まで。
http://www.crie-illuminate.jp/training/CI30-H.html
カスタム フィーチャの実装と検証
では、参考までに MOSS 2007 Enterprise Edition を例に、既定の設定を変更した検索ボックスが表示されるようカスタム フィーチャとして実装してみます。
- SharePoint ハイブ\TEMPLATE\FEATURESフォルダ内の "OSearchEnhancedFeature" フォルダをコピーして、"MyOSearchEnhancedFeature" という名前に変更します。
- MyOsearchEnhancedFeature フォルダ内の "Feature.xml" をメモ帳で開き、Feature 要素(タグ)内の Id 属性に新たな GUID を指定します。なお、新しい GUIDは、Visual Studio などで生成できます。続いて同じタグ内の Title 属性と Description 属性を任意のものに変更します。
たとえば、出来上がったファイルは次のようになります。
****Feature.xml****************************
<?xml version="1.0" encoding="utf-8" ?>
<Feature Id="52206C80-D48A-425a-86ED-C9EC4FF05114"
Title="カスタム表示の検索ボックス"
Description="既定の表示を変更した検索ボックスです"
DefaultResourceFile="spscore"
Version="12.0.0.0"
Scope="WebApplication"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="searcharea.xml"/>
<ElementManifest Location="searchadminlinks.xml"/>
</ElementManifests>
</Feature>
********************************************* - Feature.xml ファイルを上書き保存します(既定では utf-8 で保存するようにします)。
- 今度は "SearchArea.xml" を編集します。Control 要素のSequence属性値を25より小さい値に変更し、その他必要なプロパティを設定します。
- 上書き保存します。
- 次の stsadm.exe を実行し、新しいフィーチャを登録します。
stsadm.exe -o installfeature -filename MyOSearchEnhancedFeature\feature.xml -force - 必要な Web アプリケーションで フィーチャを有効化します。
stsadm.exe -o activatefeature -name MyOSearchEnhancedFeature -url http://moss2007/
なお、フィーチャの有効化は次の GUI ベースの管理画面からも操作できます。
→"SharePoint 3.0 サーバーの全体管理"- "アプリケーション構成の管理" - "Web アプリケーション機能の管理"
- iisreset.exe を実行し、IIS を再起動します。
参考
http://geeksconnected.com/muhanad/Lists/Posts/Post.aspx?ID=15
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2247186&SiteID=1