ウェルカム ページのカスタマイズ

最終更新日: 2010年4月19日

適用対象: SharePoint Server 2010

この記事の内容
SharePoint の Web ベース エディターを使用して、ウェルカム ページを編集する
メタデータ値に基づいてウェルカム ページのコンテンツをフィルター処理するようにページ クエリ文字列をカスタマイズする
ドキュメント セットのコンテンツ タイプ用の新規作成フォームを指定する

ドキュメント セットには、カスタマイズ可能な Web パーツ ページ、既定でイメージを表示する [ようこそ] ページ、指定するドキュメント セットのプロパティ、ドキュメント セットのコンテンツがあります。このトピックでは、[ようこそ] ページにサイト レベルおよびリスト レベルで加えることのできるカスタマイズについて説明します。

サイト レベルで変更を加えるには、ユーザー インターフェイス (UI) で [このコンテンツ タイプを継承するドキュメント セットのウェルカム ページを更新します。] オプションを選択します。ドキュメント セットの設定を保存して、ドキュメント ライブラリ内の [ようこそ] ページを更新します。

注意注意

[ようこそ] ページをリスト レベルでカスタマイズして変更すると、そのコンテンツ タイプのすべてのインスタンスのページが直ちに更新されます。

既定では、[ようこそ] ページは、子コンテンツ タイプにプッシュ (下へ) されません。この制約により、ユーザーが子ページで [ようこそ] ページのカスタマイズを誤って上書きすることが防止されます。[ようこそ] ページの変更は、必要な最低限のレベルのみで行うか、コンテンツ タイプを読み取り専用にマーク付けして行うことをお勧めします。たとえば、"ピッチブック" ドキュメント セットのコンテンツ タイプを作成して [ようこそ] ページをカスタマイズした後に、基本ドキュメント セットのコンテンツ タイプの [ようこそ] ページをカスタマイズして、その変更をプッシュ (下へ) した場合、"ピッチブック" のカスタマイズされたページは親ドキュメント セットのコンテンツ タイプのページによって上書きされます。[ようこそ] ページの変更をすべての子にプッシュ (下へ) するには、[このコンテンツ タイプを継承するドキュメント セットのウェルカム ページを更新します] チェック ボックスをオンにします。

ドキュメント セットには、コンテンツ タイプごとに 1 つのページがあります。したがって、ドキュメント セットのコンテンツ タイプの [ようこそ] ページに加えられた変更は、そのコンテンツ タイプのすべてのインスタンスに適用されます。コンテキストに基づいてデータを動的に取得するには、Web パーツを使用します。たとえば、[メモ掲示板] Web パーツを追加すると、ドキュメント セットのコンテキストが使用され、ピッチブックの特定の各インスタンスに異なるメモが表示されるようになります。

[ようこそ] ページをカスタマイズするには、以下の 3 つの方法を使用できます。

  1. Web ベースの SharePoint ページ エディターを使用します。このエディターを表示するには、ドキュメント セットの [設定] ページで [ウェルカム ページのカスタマイズ] リンクをクリックします。

  2. SharePoint Designer を使用します。All Files サイト オブジェクトにアクセスするための十分な権限が必要です。SharePoint Designer を開き、ドキュメント セットを保管するドキュメント ライブラリに移動し、Forms フォルダーに移動します。ドキュメント セットのコンテンツ タイプのフォルダーに移動し、docsethomepage.aspx を開きます。

  3. ドキュメント セットのオブジェクト モデルを使用して、完全なカスタム ページを実装します。Microsoft.Office.DocumentManagement.DocumentSets 名前空間で、[ようこそ] ページをカスタマイズするための API を探します。

SharePoint の Web ベース エディターを使用して、ウェルカム ページを編集する

サイト コンテンツ タイプ ギャラリーに作成したカスタムの [ドキュメント セット] コンテンツ タイプに移動し、[ドキュメント セットの設定] をクリックして、[ようこそ] ページをカスタマイズするためのリンクをクリックします。ドキュメント セットに似たページが表示されます。リボンの [ページ] タブで、[ページの編集] をクリックしてページを編集します。

Web パーツは 4 つの領域で追加できます。異なるイメージを使用するように Web パーツのイメージを変更します。[メモ掲示板] Web パーツをパッチの最下部に追加して、ユーザーがコメントを残せるようにします。これらの変更を加えるには、領域 4 で [Web パーツの追加] をクリックし、[イベントのグループ作業] Web パーツ カテゴリから [メモ掲示板] を選択します。

編集が終了すると、変更を保存できます。リボンの [ページ] タブで、[編集の終了] を選択します。[ようこそ] ページはサイト レベルで編集しました。したがって、[ドキュメントセットの設定] ページに戻り、[ようこそ] ページの変更をプッシュするようにチェック ボックスを選択し、ドキュメント セットの設定を保存します。これで、ドキュメント セットに移動すると、すべてのドキュメント セットについて Web ページがカスタマイズされていることを確認できます。

メタデータ値に基づいてウェルカム ページのコンテンツをフィルター処理するようにページ クエリ文字列をカスタマイズする

ドキュメント セットの [ようこそ] ページには、現在のドキュメント セットのコンテンツに基づいてコンテンツが動的に読み込まれます。つまり、コンテンツ クエリ Web パーツ (CQWP) などの特定の Web パーツは、期待通りに動作しない場合があります。CQWP を構成する場合、その CQWP は各ドキュメント セットに対して静的になるため、コンテキスト内のドキュメント セットに基づいて結果を動的に取得することはできません。ページのメタデータ値に基づいてフィルター処理するように CQWP をセットアップできますが、[ようこそ] ページはドキュメント セットのコンテンツ タイプごとに 1 つしかないため、これを、ドキュメント セットの [ようこそ] ページには当てはめることはできません。最も実行可能なオプションは、ページ クエリ文字列を使用する方法です。ただし、既定では、必要なページ クエリ文字列をドキュメント セットが提供していない可能性があります。したがって、ページ クエリ文字列をカスタマイズする必要があります。

カスタマイズしたページ クエリ文字列に基づいてソリューションを実装するには、ドキュメント セットの [ようこそ] ページにリダイレクトし、CQWP で使用するメタデータ値とクエリ文字列を含む Web パーツを作成します。これを行うには、ドキュメント セットの [ようこそ] ページに配置できる Web パーツを作成します。Web パーツの .ascx ファイルに、以下のコードを挿入します。

if (!String.IsNullOrEmpty(Request.QueryString["Column"]))
{
 
}
else
{
   string thisPage = Request.Url.AbsoluteUri; 
   integer docSetId = Request.QueryString["ID"];
    DocumentSet myItem = Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet.GetDocumentSet(templates.Items[docSetId].Folder); 
    thisPage+="&Column=";
    thisPage+=myItem["Column"].ToString();
    Response.Redirect(thisPage);  
}

If ステートメントでは、Column のクエリ文字列が渡されたかどうかを確認します。渡されている場合、処理を実行する必要はありません。そうでない場合、クエリ文字列を含むドキュメント セットの [ようこそ] ページにリダイレクトする必要があります。これで、CQWP を追加して、渡しているページ クエリ文字列を使用できます。CQWP の追加フィルターのセクションで、列を選択し、[ユーザー設定の値またはクエリ] に対して、[PageQueryString: Column Name] を入力します。これで、クエリ文字列として渡されるメタデータ プロパティに基づいてフィルター処理できる CQWP が作成されました。関連するコンテンツを照会するカスタム Web パーツを作成する必要はありません。

ドキュメント セットのコンテンツ タイプ用の新規作成フォームを指定する

新しいドキュメント セットの作成に使用するフォームは、SharePoint サーバーの _layouts フォルダーにあります。すべてのドキュメント セット コンテンツ タイプに対するフォームが 1 つだけあります。場合によって、ユーザー設定フォームが必要になることがあります。ユーザー設定フォームを使用すると、メタデータを自動的に入力したり、条件付き書式を追加したりできるため、ユーザーが選択するオプションに従って、指定したフィールドのみを表示するようにできます。

ドキュメント セットのコンテンツ タイプには、NewFormUrl と呼ばれるプロパティが含まれます。このプロパティを変更することで、コンテンツ タイプで使用する新しいフォームを指定できます。このプロパティを変更すると、ドキュメント セットのコンテンツ タイプごとに新しいユーザー設定フォームを指定できます。このプロパティを変更する前に、新しい .aspx ページを作成し、そのページを _layouts フォルダーまたは _layouts 内のフォルダーに保管します。フォームをフォルダー内に保管する場合、ドキュメント セットのアセンブリを含む web.config ファイルを追加します。これは、ドキュメント セットのオブジェクト モデルを使用してドキュメント セットを作成するために必要です。

次の例には、カスタマイズされた新しいドキュメント セットのページが示されています。1 つ目は、customdocumentset.aspx 分離コード ページ、次は customdocumentset.cs コード ページです。

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="CustomNewDocset.aspx.cs" Inherits="_Default" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <asp:Literal ID="litList" runat="server" />
    <asp:Literal ID="litCt" runat="server" />
</body>
</html>
 
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
 
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
SPList list = SPContext.Current.List;
litList.Text = list.Title;
SPContentTypeId ctid = new SPContentTypeId(Request.QueryString.GetValues("ContentTypeId")[0]);
SPContentType ct = list.ContentTypes[ctid];
litCt.Text = ct.Name;
    }
}

web.config ファイルは、カスタムの新しいドキュメント セットの .aspx ページを含むフォルダーに配置する必要のある構成ファイルです。web.config ファイルは必須です。これがないと、ドキュメント セットのオブジェクト モデルにアクセスできません。必要に応じて、他のアセンブリへの参照を追加します。カスタムの新しいドキュメント セット ページを、_layouts フォルダーの別のフォルダーではなくルートに配置する場合、web.config ファイルは必要ありません。

<?xml version="1.0"?>
<!-- 
    Note: As an alternative to editing this file manually, you can use the 
    Web admin tool to configure settings for your application. Use
    the Website->ASP.NET Configuration option in Visual Studio.
    A full list of settings and comments can be found in 
    machine.config.comments, which is usually located in the 
    \Windows\Microsoft.Net\Framework\v2.x\Config directory.
-->
<configuration>
<system.web>
<!-- 
            Set compilation debug="true" to insert debugging 
            symbols into the compiled page. Because this 
            affects performance, set this value to true only 
            during development.
        -->
<compilation debug="false">
<assemblies>
<add assembly="Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=94DE0004B6E3FCC5"/>
</assemblies>
</compilation>
</system.web>
</configuration>

カスタムの新しいドキュメント セット ページを使用するには、ドキュメント セットのコンテンツ タイプの URL を更新する必要があります。次の例は、使用可能な Windows PowerShell スクリプトです。変更するドキュメント セットのコンテンツ タイプを含むサイトへの URL を渡します。変更するコンテンツ タイプの ctid の適切なコンテンツ タイプ ID を指定します。SharePoint Server は、既定の代わりに、カスタマイズされた新しいドキュメント セットのページを使用するように NewFormUrl プロパティを更新します。$siteurl 文字列は、カスタムのドキュメント セットのコンテンツ タイプを含む URL にする必要があります。$ctid 文字列は、変更するドキュメント セットのコンテンツ タイプ ID です。$contentType.NewFormUrl 設定は、カスタムの新しいドキュメント セット フォームを含む _layouts フォルダーに対する場所です。

$siteUrl = "http://mysite"
$ctid = "0x0120D520"
param($siteUrl)
$site = New-Object Microsoft.SharePoint.SPSite($siteUrl)
$web = $site.RootWeb; 
$contentTypeId = New-Object Microsoft.Sharepoint.SPContentTypeId($ctid)
$contentType = $web.ContentTypes[$contentTypeId]
$contentType.NewFormUrl = "_layouts/CustomNewDocset/CustomNewDocset.aspx"
$contentType.Update()
$web.Dispose()
$site.Dispose()

Windows PowerShell スクリプトを実行すると、SharePoint Server は、新しいカスタムのドキュメント セットのページを作成し、newFormUrl プロパティの値を新しいページに変更します。ドキュメント ライブラリ内の [新しいドキュメント] ドロップダウン リストを使用して新しいドキュメント セットを作成すると、カスタム ページが表示されます。

関連項目

タスク

[方法] 新しいドキュメント セット フォームの作成

参照

DefaultDocumentCollection

WelcomePageFields

FieldLinks

概念

ドキュメント セット