[方法] バリエーション ラベル コントロール ロジックをカスタマイズする
Default.Master、LeftNavFlyouts.Master、Stacked.Master、TopNavFlyouts.Master など、サイトを公開するために Microsoft Office SharePoint Server 2007 で使用可能な既定の各マスタ ページには、ここで示しているように、マークアップの DelegateControl 要素を介して VariationsLabelMenu.ascx と呼ばれるファイルへの参照が含まれます。
<SharePoint:DelegateControl runat="server" ControlId="VariationsFlagControl" />
VariationsLabelMenu.ascx ファイルにはページ上にバリエーション ラベルをレンダリングするロジックが含まれます。バリエーション ラベル コントロールは、バリエーション ページ上のユーザー コントロールです。このページには、そのページで使用可能なバリエーション ページが表示されるため、ユーザーはそのページの他の使用可能なバリエーションにすぐに移動することができます。
VariationsLabelMenu.ascx ファイルは、パス \<Program Files>\Common Files\Microsoft Shared Debug\Web Server Extensions\12\Template\ControlTemplates で定義されます。Office SharePoint Server 2007 の公開機能により、DelegateControl 要素が \<Program Files>\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\Publishing\VariationsFlagControl.xml に登録されます。この XML ファイルは VariationsLabelMenu.ascx ファイルを指し、"企業イントラネット" のサイト テンプレートで準備されたすべてのサイトに、VariationsLabelMenu.ascx によるレンダリングが提供されます。また、サーバー ファーム内のすべてのサイト コレクションの Default.Master マスタ ページに、VariationsLabelMenu.ascx による同じレンダリングが提供されます。VariationsFlagControl.xml ファイルはフロンドエンド Web サーバー ファイル システム上にあり、サイト コレクションごとにレンダリングを変更することはできないためです。
既定のバリエーション ラベル コントロール ロジックを、3 つの方法のいずれかでカスタマイズすることができます。各方法にはそれぞれ利点と欠点があるため、使用する方法を決定する前にそれらを検討してください。
VariationsLabelMenu.ascx ファイルを直接編集します。
これはロジックを編集する最も簡単な方法です。フロントエンド Web サーバー ファイル システムでのニーズに合わせて、ロジックを VariationsLabelMenu.ascx ファイルで直接編集します。
注意
各サーバー上で VariationsLabelMenu.ascx ファイルを更新する必要があります。サーバー ファームのすべてのサイト コレクションは、指定するカスタム バリエーション ルート ラベルに結び付けられます。
.ascx ファイルを、マスタ ページおよびページ レイアウト ギャラリーで作成します。
この手法の実装については、最初の手順である .ascx ファイルをマスタ ページおよびページ レイアウト ギャラリーで作成するにはで説明しています。前の方法と同様、これも直接の編集を介した簡単かつ迅速なカスタマイズを提供し、DLL のコンパイルや展開の問題を伴わないません。さらに、各サイト コレクションは独自のページ レイアウトのセットを使用するため、この手法ではサイト コレクション レベルでバリエーション ラベル コントロール ロジックのカスタマイズができます。この手法を使用する場合、各フロントエンド Web サーバー上での web.config ファイルの更新もする必要があります。
警告
VariationsLabelMenu.aspx ファイルに AllowCompilation フラグを設定するときには注意してください。インライン コードを使用すると、そのページに悪意のあるコードが挿入される可能性があります。
プリコンパイル済みアセンブリを作成します。
この方法の実装については、2 番目の手順プリコンパイル済みアセンブリを作成するにはで説明しています。このアプローチは、インライン コードの実行のためにマスタ ページおよびページ レイアウト ギャラリー項目を開くことに伴うセキュリティ上の問題を引き起こすことがありません。.ascx ファイルの作成方法と同様に、カスタマイズはサイト コレクション レベルで行われます。ただし、バリエーション ラベル コントロール ロジックの変更が必要になるたびに、アセンブリを再コンパイルする必要があります。このため、この方法での変更 - テスト - 展開の周期はそれほど速くありません。
注意
アセンブリをすべてのフロントエンド Web サーバーに展開する必要があります。
.ascx ファイルをマスタ ページおよびページ レイアウト ギャラリーで作成するには
VariationsLabelMenu.ascx をサイト コレクションのマスタ ページおよびページ レイアウト ギャラリーにアップロードします。
マスタ ページおよびページ レイアウト ギャラリーの VariationsLabelMenu.ascx のインライン コードを実行するには、web.config ファイルを以下のように変更します。
<SharePoint> <SafeControls> <!-- marks the VariationsLabelMenu.ascx as safe --> <SafeControl Src="/_catalogs/masterpage/VariationsLabelMenu.ascx" Safe="True" AllowRemoteDesigner="True" /> </SafeControls> <SafeMode ... > <!-- marks VariationsLabelMenu.ascx for ASP.NET compilation --> <PageParserPaths> <PageParserPath VirtualPath= "/_catalogs/masterpage/VariationsLabelMenu.ascx" CompilationMode="Always" AllowServerSideScript="False" AllowUnsafeControls="False" /> </PageParserPaths> </SafeMode> </SharePoint>
フロントエンド Web サーバー ファイル システムの VariationsLabelMenu.ascx ファイルへの参照を、マスタ ページおよびページ レイアウト ギャラリーの VariationsLabelMenu.ascx ファイルへの参照に置き換えます。これは、以下のいずれかの方法で実行することができます。
Default.Master マスタ ページから DelegateControl マークアップを完全に削除し、マスタ ページおよびページ レイアウト ギャラリーの VariationsLabelMenu.ascx ファイルへの参照を埋め込みます。
Default.Master マスタ ページのコピーを作成して [Default2.master] などに名前を変更し、サイト テンプレートが Default2.master を使用するようにします。Default2.master では、フロントエンド Web サーバー ファイル システムの VariationsLabelMenu.ascx ファイルへの参照を、マスタ ページおよびページ レイアウト ギャラリーの VariationsLabelMenu.ascx ファイルへの参照に置き換えることができます。
他の公開中のマスタ ファイルについては、フロントエンド Web サーバー ファイル システムの VariationsLabelMenu.ascx ファイルへの参照を、マスタ ページおよびページ レイアウト ギャラリーの VariationsLabelMenu.ascx ファイルへの参照に置き換えることができます。
プリコンパイル済みアセンブリを作成するには
VariationsLabelMenu.ascx のコードをコピーして、アセンブリ DLL に複合コントロールを作成します。VariationsLabelEcbMenu および VariationHierarchicalDataSource コントロールを子コントロールとして使用します。
( \<Program Files>\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\Publishing\VariationsFlagControl.xml での DelegateControl 登録を変更して、作成した複合コントロール (フロントエンド Web サーバー ファイル システムの VariationsLabelMenu.ascx への参照を置き換える) を指すようにします。
DelegateControl マークアップを Default.Master マスタ ページから完全に削除して、作成した複合コントロールへの参照を埋め込むこともできます。
他の公開中のマスタ ファイルについては、VariationsLabelMenu.ascx への参照を、作成した複合コントロールへの参照に置き換えることができます。