テンプレートを展開する (SharePoint Foundation 2010)
適用先: SharePoint Foundation 2010
ここでは、カスタム サイト定義を作成し、ソリューション パッケージを使用して展開する方法について説明します。
この記事の内容
サイト定義とは
サイト定義と構成
カスタム サイト定義と構成を作成する
ソリューション パッケージを使用してサイト定義を展開する
サイト定義とは
Microsoft SharePoint Foundation 2010 では、ユーザーがユーザー インターフェイス (UI) からサイトを作成するときに、サイト定義構成、またはサイトのインスタンス化の方法を定義したカスタム サイト テンプレートを選択します。サイト定義とは、リスト、ファイル、Web パーツ、フィーチャー、新しい SharePoint サイトを展開するための設定などを定めたテンプレートです。
サイト定義は、一連のサイト定義構成の集まりです。各サイト定義は名前を持ち、サイト定義構成のリストを含みます。SharePoint Foundation 2010 では、サイト定義は、新しいサイトの展開に適用できる XML ファイルのセットで構成されています。これらのファイルが Web サーバーに配置されます。
サイト定義は主に、フロントエンド Web サーバーの %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates フォルダーの下位フォルダーに格納されている複数の XML ファイルおよび ASPX ファイルで構成されています。
サイト定義から作成したサイトは、元のサイト定義の構造の情報およびコンテンツの情報に対する追加は行いますが、情報の繰り返しはありません。サイトは、そのライフサイクル全体を通して、基になったサイト定義を使用します。このため、サイトを作成した後で、その元となったサイト定義を変更または削除することはサポートされていません。このような変更を行うと、その定義から作成したサイトが正常に動作しなくなる場合や、そのサイト定義を直接的または間接的に基盤とする新しいサイトを作成できなくなる場合があります。開発者がサイト定義をカスタマイズするときには、サイト定義への変更を含むフィーチャーを追加できます。サイト定義自体は変更されません。
Microsoft によってサポートされている、サイト定義へのカスタマイズの種類の詳細については、「カスタム サイト定義とカスタム領域定義 Windows SharePoint サービスで、SharePoint Portal Server 2003、および Office SharePoint Server 2007 操作のサポートされている/されていないシナリオ」(https://go.microsoft.com/fwlink/?linkid=187678&clcid=0x411) を参照してください。
オブジェクト モデルでは、SPWebTemplate がサイト定義 (および構成) を表します。サイト テンプレートおよびサイト定義の詳細については、「Site Templates and Definitions」(https://go.microsoft.com/fwlink/?linkid=184756&clcid=0x411) (英語) を参照してください。
注意
STP 形式のカスタム サイト テンプレート (.stp ファイル) は、SharePoint Foundation 2010 では廃止され、WSP 形式のサイト テンプレートに置き換わりました。Windows SharePoint Services 3.0 では、ユーザーは既存のサイトをカスタム サイト テンプレートとして保存できます。サイト テンプレートはモデルとしてデータベースに格納され、ユーザーはサイトのインスタンス化の方法を定める基盤としてサイト テンプレートを選択できます。SharePoint Foundation 2010 では、ユーザーは既存のサイトをテンプレートとして保存できます。テンプレートは、サイト コレクションのトップレベル サイトのソリューション ギャラリーに .wsp ファイルとして保存され、サイト コレクションのすべての Web サイトでサブサイト作成に使用できるようになります。
サイト定義の詳細については、「Site Definitions and Configurations (英語)」(https://go.microsoft.com/fwlink/?linkid=183458&clcid=0x411) (英語) を参照してください。
サイト定義と構成
サイト定義は、特定の SharePoint サイトを定義するものです。SharePoint Foundation 2010 には、5 つのサイト定義がネイティブにインストールされています。サイト定義には、複数のサイト定義構成を含めることができます。SharePoint Web サイトは、以下を含む特定のサイト定義構成を基盤としています。
STS は、チーム サイト、空のサイト、およびドキュメント ワークスペースのサイト定義構成を含みます。
MPS は、一般的な会議ワークスペース、空の会議ワークスペース、意思決定の会議ワークスペース、イベントの会議ワークスペース、および関連する会議ワークスペースのサイト定義構成を含みます。
CENTRALADMIN は、サーバーの全体管理 Web サイトのサイト定義構成を提供します。
WIKI は、Wiki 技術を使用したコミュニティ コンテンツをサポートする Web サイトのサイト定義構成を提供します。
BLOG は、ブログのサイト定義構成を提供します。
各サイト定義は、SharePoint Foundation 2010 のインストール時にフロントエンド Web サーバーの \\Program Files\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates サブフォルダーに配置されるファイルで構成されます。サイト定義のファイルには, .xml, .aspx, .ascx、および .master のページ ファイルと、ドキュメント テンプレート ファイル (.dot, .htm など) およびコンテンツ ファイル (.gif, .doc など) で構成されます。
カスタマイズしていないページおよびページのカスタマイズ
サイト定義ファイルは Microsoft インターネット インフォメーション サービス (IIS) のプロセス起動時にサーバー上のメモリにキャッシュされます。これにより、カスタマイズしていないページをサイト間で再利用できます。これらのファイルに含まれている情報は実行時にキャッシュから取得されます。ページおよびリスト スキーマはサイト定義ファイルから読み込まれますが、サイト内の実際のファイルのように表示されます。新しい Web パーツ ページも、カスタマイズしていないものとみなされます。
サイト ページをカスタマイズした場合 (Web パーツに対する変更など、ブラウザーベースのカスタマイズは除く)、その内容はコンテンツ データベースに格納され、サイト定義からの元のページの代わりに、カスタマイズしたサイト ページが使用されます。アップロードした .aspx ファイルは、カスタマイズしたものと自動的にみなされます。
実体化とページのカスタマイズの詳細については、「Site Definitions and Configurations (英語)」(https://go.microsoft.com/fwlink/?linkid=183458&clcid=0x411) (英語) を参照してください。
主要なスキーマ ファイル
次の表は、サイト定義用に変更できる主要な XML ファイルと、ファイル システムでの場所の一覧です。
WebTemp.xml |
サイト定義を識別し、その構成についての情報を提供します。場所: \TEMPLATE\1033\XML |
Onet.xml |
ナビゲーション領域の定義、使用できるリスト定義の指定、ドキュメント テンプレートおよびそのファイルの指定、リストのベース タイプの定義、およびサイト定義の構成とモジュールの定義を行います。場所: \TEMPLATE\SiteDefinitions\site_type\XML |
Schema.xml |
ビュー、フォーム、ツール バー、およびリスト定義の特別なフィールドを定義します。各定義はそれぞれ独自の Schema.xml ファイルを持ちます。場所: \TEMPLATE\FEATURES\List_Definition_Name |
DocIcon.xml |
SharePoint Foundation の展開の各フロントエンド Web サーバーには、DocIcon.xml ファイルが含まれています。このファイルは、ファイルのプログラム識別子 (ProgID) およびドキュメントの種類のファイル名拡張子を、特定のアイコンと、それぞれの種類を開くためのコントロールに対応付けます。DocIcon.xml に加えた変更は SharePoint Foundation の展開全体にグローバルに作用し、フロントエンド Web サーバーのすべてのサイト定義に影響します。場所: \TEMPLATE\XML |
これらの XML ファイルでは、Collaborative Application Markup Language (CAML) (英語) (https://go.microsoft.com/fwlink/?linkid=183464&clcid=0x411) (英語) を使用して、サイトのさまざまな面を定義します。サイト定義のカスタマイズに使用できるこれらの主要な XML ファイルの詳細については、「Site Definitions and Configurations (英語)」(https://go.microsoft.com/fwlink/?linkid=183458&clcid=0x411) (英語) を参照してください。
カスタム サイト定義と構成を作成する
既存のサイト定義を手動でコピーするか、または .wsp ファイルを Visual Studio 2010 にインポートすることによって、カスタム サイト定義を作成できます。
既存の SharePoint サイトからアイテムをインポートする
この方法には、SharePoint Foundation からサイトをテンプレートとして保存して .wsp ファイルを生成することと、ソリューションのインポートのプロジェクト テンプレートを使用してその .wsp ファイルを Visual Studio 2010 にインポートすることが必要です。SharePoint ソリューション パッケージのインポートのプロジェクト テンプレートでは、既存の SharePoint サイトのコンテンツ タイプ、リスト定義、フィールドなどの要素を、新しい Visual Studio SharePoint ソリューションで再利用できます。既存の SharePoint サイトから Visual Studio SharePoint プロジェクトへのアイテムのインポートの詳細については、「既存の SharePoint サイトからのアイテムのインポート」(https://go.microsoft.com/fwlink/?linkid=187040&clcid=0x411) を参照してください。この章は、以下の作業をデモンストレーションするウォークスルーを含みます。
カスタム サイト列を追加して SharePoint サイトをカスタマイズします。
SharePoint サイトを .wsp ファイルにエクスポートします。
.wsp のインポート プロジェクトを使用して、Visual Studio SharePoint プロジェクトに .wsp ファイルをインポートします。
既存の SharePoint サイトをコピーする
この方法では、既存のサイト定義のコピー、そのコピーの変更、および 2 つのスキーマ ファイルの変更を行います。1 つは WebTemp.xml ファイルのコピー、もう 1 つは Onet.xml ファイルのコピーです。
警告
もともとインストールされていた WebTemp.xml ファイルは変更しないでください。
Local_Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates\ ディレクトリーにある既存のサイト定義フォルダーをコピーします。コピーは元のものと同等である必要があり、スペースが入らない任意の名前を付けることができます。
たとえば、Microsoft SharePoint Foundation 用のチーム サイト定義から派生したカスタム サイト定義を作成するには、\sts フォルダーをコピーします。
WebTemp.xml ファイルのコピーを作成します。このファイルは Local_Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\1033\XML にあります。
元のファイル名に文字列を追加して、ファイルに一意の名前を付けます (たとえば WebTempAction.xml)。実行時にコンパイラは、このファイルに含まれている情報を元のファイルに含まれている情報とマージして、新しいサイトの作成に使用できるサイト定義構成を指定します。
新しい WebTemp ファイルの内容をカスタマイズします。
各 WebTemp.xml ファイルには、Template 要素および Configuration サブ要素のコレクションが含まれています。これらはコンパイラに対し、インスタンス化できるすべてのサイト定義構成を示します。Configuration 要素で定義する項目の例として、タイトル、説明、ユーザー インターフェイス (UI) に表示されるイメージの URL、[サイト コレクションの作成] ページの [テンプレートの選択] セクションでテンプレートを表示するタブを指定する表示カテゴリなどがあります。
重要
WebTemp ファイルで定義された各 Template 要素の Name 属性には、新しいフォルダーに割り当てられたのと同じ名前が含まれている必要があります。SharePoint Foundation 2010 で既に使用されている ID との競合を防ぐには、10000 より大きい一意の値を ID 属性に使用します。
次の例では、WebTemp.xml ファイルで 2 つの Configuration 要素を使用して、サイトをインスタンス化するための複数のサイト定義構成を定義しています。1 つは Research Collaboration というサイト用、もう 1 つは Research Document Workspace というサイト用です。この例では、単一のサイト定義の中で 2 つの構成のみを使用していますが、単一の WebTemp.xml ファイル内で複数のサイト定義を指定して、それぞれに複数の構成を含めることもできます。各サイト定義は、それぞれ異なるサイト定義フォルダーと、その Onet.xml ファイルを参照します。
<?xml version="1.0" encoding="utf-8" ?>
<Templates xmlns:ows="Microsoft SharePoint">
<Template Name="RESEARCH" ID="10001">
<Configuration ID="0" Title="Research Collaboration site"
Hidden="FALSE" ImageUrl="_layouts/images/stsprev.jpg"
Description="This definition creates a site for the Research
team to create, organize, and share general information."
DisplayCategory="Collaboration">
</Configuration>
<Configuration ID="1" Title="Research Workspace" Hidden="FALSE"
ImageUrl="_layouts/images/dwsprev.jpg" Description="This
definition creates a site for Research team colleagues to
work together on specific documents."
DisplayCategory="Collaboration">
</Configuration>
</Template>
</Templates>
この例は、Template 要素の Name 属性の値が示すように、"RESEARCH" という名前のサイト定義ディレクトリが存在することを前提としています。WebTemp*.xml ファイルで複数のサイト定義を指定する場合には、それらの定義は一意の ID 値によって区別されます。
各 Configuration 要素には ID 属性もあります。この IDと、Template 要素の Name 属性の値との組み合わせによって、特定の Onet.xml ファイルの特定の Configuration 要素の内容を参照します。この例では、Name 属性は RESEARCH で、ID 属性は 0 と 1 です。したがって、サイト定義 RESEARCH と、Onet.xml で ID が 0 と 1 の構成を参照します。
新しい定義構成が UI でオプションとして表示されるようにするために、IIS のリセットが必要な場合があります。これを行うには、コマンド プロンプトで「 iisreset 」と入力します。
Onet.xml での各サイト定義構成の定義の詳細については、「How to: Use Site Definition Configurations (英語)」(https://go.microsoft.com/fwlink/?linkid=183465&clcid=0x411) (英語) を参照してください。
ソリューション パッケージを使用してサイト定義を展開する
ソリューション パッケージを使用してカスタム サイト定義を展開するには、ソリューション パッケージのマニフェスト ファイルに SiteDefinitionManifest 要素を追加します。TemplateFiles 要素を追加して、\14\Template フォルダーのサブフォルダーに展開する必要があるテンプレート ファイルを定義します。
SiteDefinitionManifest 要素を追加する
SiteDefinitionManifest 要素には、指定されたフォルダー内のすべてのファイルをピックアップし、\14\Template\SiteTemplates フォルダーの中に必要なフォルダーを作成する Location 属性があります。WebTempFile 子要素は webtemp*.xml ファイルを展開して、SharePoint 2010 Products がテンプレートを認識するようにします。次に示すのはその例です。
<SiteDefinitionManifests>
<SiteDefinitionManifest Location="LitwareSiteTemplate">
<WebTempFile Location="1033\xml\webtempLitware.xml" />
</SiteDefinitionManifest>
</SiteDefinitionManifests>
TemplateFile 要素を追加する
ソリューション マニフェスト ファイルの TemplateFile 要素は、\14\Template フォルダーのサブフォルダーに展開する必要があるテンプレート ファイルを定義するために使用します。この方法で展開できるファイルの例として、カスタム フィールドの型の詳細を定義する fldtypes*.xml ファイルが挙げられます。Location 属性を使用して、ファイルの相対パスを指定します。次の例では文字列 "Text" で示されています。
<TemplateFiles
<TemplateFile
Location="Text"/>
...
</TemplateFiles>
ソリューションを展開する方法の詳細については、「ソリューション パッケージを展開する (SharePoint Foundation 2010)」を参照してください。