Windows SharePoint Services のマスタ ページのカスタマイズ
Windows SharePoint Services のインストール時に、既定のマスタ ページがサイト内のすべてのページに適用されます。しかし、あるサイト用に独自のマスタ ページを用意して、その配下の各サイトに適用することもできます。
Windows SharePoint Services でマスタ ページをカスタマイズする方法には、次の 2 種類があります。
Windows SharePoint Services に付属の default.master ファイルを別名でコピーし、これに対して修正を施す方法。
Microsoft Office SharePoint Designer 2007 で default.master ページを編集する方法。マスタ ページの編集や表示のほか、コンテンツ ページを作成し、読み込み専用マスタである旨の印をつけたマスタ ページを適用した状態で表示することもできます。
マスタ ページのプレビュー機能は Office SharePoint Designer にしか組み込まれていません。
警告
<%System Drive%>Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\GLOBAL\ フォルダにある default.master ファイルを直接編集しないでください。
新規に作成したサイトでは、ファイル システム上にある既定のマスタ ページが使われます。Office SharePoint Designer でマスタ ページをカスタマイズした場合、その内容はコンテンツ データベースに保存されます。マスタ ページを変更しても、これを参照するコンテンツ ページ自身が書き換えられるわけではなく、ファイル システム上にそのまま残っています。
注意
あるサイト用のマスタ ページをカスタマイズしても、当該サイト以外のコンテンツ ページには影響が及びません。アプリケーション ページ (_layouts 内のページ) も同様です。これは Windows SharePoint Services アプリケーションの管理下にあり、すべてのサイトに共有されるものだからです。
コンテンツ ページからマスタ ページを参照する記述
Windows SharePoint Services には、マスタ ページを参照するためのトークンがいくつか組み込まれています。ダイナミック トークンである "~masterurl/default.master" および "~masterurl/custom.master" と、スタティック トークンである "~site/default.master" および "~sitecollection/default.master" です。
注意
いずれも Windows SharePoint Services のマスタ ページに適用されるものであって、ASP.NET 2.0 のマスタ ページは対象外です。
ダイナミック トークン "~masterurl/default.master"
コンテンツ ページからマスタ ページを参照するトークンで、MasterPageFile 属性に記述すると、MasterUrl プロパティの値に置換されます。たとえば <%@ Page MasterPageFile="~masterurl\default.master"%> というページ ディレクティブを記述すると、トークン "~masterurl/default.master" は実行時に、MasterUrl プロパティの値である、 マスタ ページのサーバー相対完全パス (ファイル名も含む) に置き換えられます。
インストール時の状態のままであれば、SharePoint のコンテンツ ページにはすべてこのダイナミック トークンが記述されており、MasterUrl プロパティの値は Windows SharePoint Services の default.master の完全パスになっています。この値は必要に応じて変更できます。
重要
"~masterurl/default.master" という文字列全体が 1 つのトークンになっています。
ダイナミック トークン "~masterurl/custom.master"
コンテンツ ページからマスタ ページを参照するトークンで、MasterPageFile 属性に記述すると、CustomMasterUrl プロパティの値に置換されます。トークン "~masterurl/custom.master" は実行時に、CustomMasterUrl プロパティの値である、マスタ ページのサーバー相対完全パス (ファイル名も含む) に置き換えられます。
インストール時の状態のままであれば、SharePoint のコンテンツ ページには現れません。共有マスタ ページがもう 1 つ必要な場合に備えて用意されたトークンです。
重要
"~masterurl/custom.master" という文字列全体が 1 つのトークンになっています。
スタティック トークン "~site/default.master" および "~sitecollection/default.master"
それぞれ、マスタ ページのサイト相対リンク、サイト コレクション相対リンクに置き換えられます。たとえば http://siteColl/subsite1/subsite2/default.aspx にあるコンテンツ ページに "~sitecollection/mypage.master" というトークンを記述すると、http://siteColl/mypage.master というマスタ ページが適用されることになります。一方、"~site/mypage.master" と記述すれば、http://siteColl/subsite1/subsite2/mypage.master というマスタ ページが使われます。
注意
MasterUrl および CustomMasterUrl プロパティの値は、初期状態ではどちらも "/_catalogs/masterpage/default.master" となっています。後で default.master を削除する必要が生じた場合、両方のプロパティ値を設定し直す必要があります。そうしないと、default.master がマスタ ページとしてまだ使われている旨のエラーになります。
別の方法として、ページ ディレクティブで指定されている MasterPageFile 属性の URL を直接変更することにより、コンテンツ ページから参照するマスタ ページを変更することもできます。ただし、MasterUrl プロパティを変更する方法と違い、ページそのものの内容を変えることになります。
Windows SharePoint Services のマスタ ページに関するその他の検討事項
Windows SharePoint Services のマスタ ページを扱う際には、次のような点にも注意してください。
マスタ ページのコンパイル モードは、他の .aspx ページの場合と同様に機能します。モードは必要に応じて変更できます。マスタ ページのみコンパイルしてコンテンツ ページはコンパイルしないなど、モードが混在していてもかまいません。
マスタ ページにインライン スクリプトが記述されていてもコンパイルできますが、Office SharePoint Designer その他のツールでカスタマイズを行うと、コンパイルはできず、スクリプトも動作しなくなることに注意してください。したがって、独自に作るマスタ ページにはインライン スクリプトを記述しないようお勧めします。
Windows SharePoint Services に付属のマスタ ページは入れ子構造になっていませんが、独自に作るマスタ ページを入れ子構造にすることはできます。どのようなレベルのマスタ ページでも作れるほか、他のマスタ ページを参照することもできます。参照には次のディレクティブを使います。
<%@ Master master=MyParent.master %>
注意
マスタ ページの入れ子に対応していないページ エディタもあります。
ゾーン内の Web パーツをマスタ ページに追加することはできません。スタティック Web パーツ (ゾーン外のパーツ) は追加できますが、ダイナミック Web パーツは追加できない、ということです。
ゾーンをマスタ ページに追加した後で、ブラウザ上で Web パーツをゾーンに追加することはできますが、この Web パーツはコンテンツ ページに関連付けられたものになります。