モバイル ページのレンダリング システム
このトピックでは、Windows SharePoint Services 3.0 で RenderingTemplates およびテンプレート セレクタを使用して、モバイル デバイスからアクセスできるページをレンダリングする方法について説明します。
ページ上のコントロール
モバイル ページは、RenderingTemplate コントロールによってレンダリングされますが、これらはページ上で直接参照されません。ページの 3 つの主要セクション、つまりヘッダー、コンテンツ、フッターそれぞれが、現在のサイト定義と現在のページの種類を使用して, .ascx ファイル (\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES) にある) で宣言されている RenderingTemplate を選択するコントロールを宣言します。Windows SharePoint Services に付属の RenderingTemplates は、MobileDefaultTemplates.ascx で宣言されています。カスタムの RenderingTemplates は、同じフォルダのカスタム .ascx ファイルで宣言されます。
モバイル ページで RenderingTemplate を選択する 3 種類のコントロールは、次のとおりです。
SPMobilePageTitle : ヘッダー セクションをレンダリングする RenderingTemplate コントロールを選択します。
SPMobilePageContents : 本文セクションをレンダリングする RenderingTemplate コントロールを選択します。
SPMobilePageNavigation : フッター セクションをレンダリングする RenderingTemplate コントロールを選択します。
たとえば、SPMobilePageTitle オブジェクトは、下に示すように、STS ホーム ページ mbllists.aspx の HeaderTemplate セクションで宣言されています。
<HeaderTemplate>
<SPMobile:SPMobileControlContainer RunAt="Server" Weightless="true">
<SPMobile:SPMobilePageTitle RunAt="Server" />
<SPMobile:SPMobileComponent TemplateName="MobileDefaultSeparator" RunAt="Server" />
</SPMobile:SPMobileControlContainer>
</HeaderTemplate>
これらのクラスの 1 つのオブジェクトが、要求された現在のページ (ホーム ページ、リスト ビュー ページ、編集フォームなど) の種類に基づいて、RenderingTemplate を選択します。たとえば、ホーム ページでは、SPMobilePageTitle は、ID が "MobileHomePageTitle" の RenderingTemplate を呼び出し、新しいアイテムのフォームでは、SPMobilePageContents は、ID が "MobileNewFormContents" の RenderingTemplate を呼び出します。
.ASCX ファイル内
ページ上のコントロールによって呼び出された RenderingTemplates には、SPMobileTemplateSelector から派生するクラスのオブジェクトを値に持つ Template 要素があります。9 つのクラスがあります。
-
注意
最後のクラスは、Windows SharePoint Services で、モバイル デバイスをカスタム ホーム ページにリダイレクトするために使用されます。この記事では、このクラスについては説明しません。詳細については、「[方法] リダイレクションを使用してモバイル ホーム ページをカスタマイズする」を参照してください。
派生元のクラスの名前が示すとおり、これらのコントロールは、実際にページの一部をレンダリングするために別の RenderingTemplate を選択します。たとえば、「ページ上のコントロール」で触れた "MobileHomePageTitle" RenderingTemplate の Template 要素の値は、SPMobileWebTitle です。SPMobileWebTitle は、モバイル ホーム ページのヘッダー (タイトル) 領域をレンダリングする RenderingTemplate を呼び出します。
モバイル ホーム ページのセクションのレンダリング
前述のとおり、"MobileHomePageTitle" の Template 要素の値は、SPMobileWebTitle です。SPMobileWebTitle は、モバイル ホーム ページのヘッダー (タイトル) 領域をレンダリングする RenderingTemplate を呼び出します。具体的には、ID が Mobile_サイトの種類の ID_HomePage_Title の RenderingTemplate を探します。サイトの種類の ID は、現在の Web サイトのサイト定義の名前または ID 番号です。Windows SharePoint Services 3.0 に付属のサイト定義の場合、サイトの種類の ID は STS または BLOG です。
注意
MPS、CENTRALADMIN、および WIKI サイトでは、モバイル デバイスからのアクセスはサポートされていません。
カスタム サイト定義の場合、サイトの種類の ID は、サイト定義の ID 番号 (名前ではない) です (サイト定義の ID は、WebTemp.xml ファイルの Template 要素の ID 属性で設定します。サイト定義の ID 属性の詳細については、「WebTemp.xml」を参照してください)。
現在のサイト定義の RenderingTemplate が、\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES のどの .ascx ファイルにも存在しない場合、Mobile_Default_HomePage_Title が使用されます (これにより、コントロール SPMobileWeb が呼び出されます。このコントロールは、Label コントロールを使用して、Web サイト タイトルを表示します)。Windows SharePoint Services に付属しているホーム ページの RenderingTemplate の操作の詳細については、「[方法] モバイル ホーム ページをカスタマイズする」を参照してください。
SPMobileWebContents と SPMobileWebNavigation は、それぞれ、モバイル ホーム ページのメイン ページのコンテンツ領域とフッター (ナビゲーション) 領域をレンダリングする RenderingTemplate を選択します。つまり、最初の 3 つのセレクタ クラスはすべて、Mobile_サイトの種類の ID_HomePage_ページの領域というパターンの ID を持つ RenderingTemplate を探します。ページの領域は、Title、Contents、または Navigation です。
リスト ビュー ページとフォーム ページでのセクションのレンダリング
リスト ビュー ページと フォーム ページには、SPMobileListTitle、SPMobileListContents、および SPMobileListNavigation クラスが使用されます。 これらはそれぞれ、Mobile_リストの種類の ID_ページの種類_ページの領域というパターンの ID を持つ RenderingTemplate を探します。ページの種類は、View、NewForm、EditForm、DispForm、または DeletePageです。リストの種類の ID は、現在のリストの種類の ID 番号 (105など) または SPListTemplateType 列挙の値の 1 つ (Contacts など) です。サイト定義の Onet.xml ファイルで、リストがサイトの種類の一部として指定されている場合、リストの種類の ID は、Onet.xml の List 要素の Type 属性の値です。このファイルは、ローカル ドライブ:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\SITETEMPLATES\サイトの種類\xml ディレクトリにあります。リストが UI、つまり [新規作成] (リスト) ページでサイトに追加された場合、リストの種類の ID は、新しいリストの種類のベースとして使用されたリストの種類の ID です。この ID は、ユーザーが、どのようなリンクで [作成] ページ (create.aspx) をクリックして [新規作成] ページを表示したかによって決まります。
次の表に、Windows SharePoint Services 3.0 に付属しているリストの種類の ID 番号を示します。カスタムのリストの種類の ID 番号も使用できます。後者は、Microsoft が Windows SharePoint Services の将来のバージョンで使用する番号と競合しないように、10000 より大きい数字にする必要があります。
ID |
説明 |
---|---|
100 |
汎用リスト |
101 |
ドキュメント ライブラリ |
102 |
アンケート |
103 |
リンク リスト |
104 |
お知らせリスト |
105 |
連絡先リスト |
106 |
イベント リスト |
107 |
タスク リスト |
108 |
ディスカッション掲示板 |
109 |
画像ライブラリ |
110 |
データ ソース |
111 |
サイト テンプレート ギャラリー |
112 |
ユーザー情報 |
113 |
Web パーツ ギャラリー |
114 |
リスト テンプレート ギャラリー |
115 |
XML フォーム ライブラリ |
116 |
マスタ ページ カタログ |
117 |
コードなしのワークフロー |
118 |
ワークフロー プロセス |
119 |
WebPageLibrary |
120 |
リストのカスタム グリッド |
130 |
データ接続ライブラリ |
140 |
ワークフローの履歴 |
150 |
ガント タスク |
200 |
関連する会議のリスト |
201 |
議題と議事録のリスト |
202 |
会議の出席者のリスト |
204 |
会議の決定事項のリスト |
207 |
会議の目的のリスト |
210 |
会議のテキスト ボックス |
211 |
提案する議題のリスト |
212 |
会議ワークスペースのページのリスト |
300 |
ポータル サイト リスト |
301 |
投稿 |
302 |
コメント |
303 |
カテゴリ |
1100 |
案件管理 |
1200 |
管理タスク |
2002 |
個人用ドキュメント ライブラリ |
2003 |
個人用ドキュメント ライブラリ |
現在のリストの種類を指定する ID を持つ RenderingTemplate が存在しない場合、Mobile_Default_ページの種類_ページの領域というパターンの ID を持つ RenderingTemplate が使用されます。Windows SharePoint Services に付属の RenderingTemplate を表示するリストの詳細については、「[方法] モバイル リスト ビュー ページおよびフォーム ページをカスタマイズする」を参照してください。
フィールドの表示
SPMobileListFieldSelector は、リスト ビュー、[新規作成]、[編集]、または [表示] ページに特定のフィールドをレンダリングする RenderingTemplate を選択します。このテンプレートは、MobileCustomListField_リストの種類の ID _フィールドの種類_フィールドというパターンの ID を持つ RenderingTemplate を探します。
リストの種類の ID は、前のセクションの説明と同じです。フィールドの種類は、データ型がフィールドです。Text、Number など、SPFieldType 列挙の任意の値をとることができます。カスタムのフィールドの種類を定義する fldtypes*.xml ファイルの <Field Name="TypeName"> 要素で定義されたカスタムのフィールドの種類も使用できます (カスタムのフィールドの種類の詳細については、「ユーザー設定フィールド型の定義」を参照してください)。
フィールドは、WorkPhone など、フィールドの内部名です。リスト定義の Schema.xml ファイルで、フィールドがリストの一部として指定されている場合、内部名は、schema.xml の Field 要素の Name 属性の値として検索できます。このファイルは、ローカル ドライブ:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\機能フォルダディレクトリにあります。フィールドが UI、つまり [列の作成] ページでリストに追加された場合、フィールドは、SPField.InternalName プロパティの値となり、オブジェクト モデルからのみ検索できます。
注意
フィールドは、フィールド (列) の内部名で、フィールドの表示名とは必ずしも同じではありません。UI でユーザーによって作成されたフィールドの場合、内部名は、ユーザーが選択した表示名 ([列の作成] ページの [列名] ボックスで) から、システムによって生成されます。ユーザーが表示名にスペースや句読点を含めた場合、モバイル テンプレート レンダリング システムでは、生成された内部名を操作できないため、このようなフィールドのレンダリングはカスタマイズできません。
検索されている ID を持つ RenderingTemplate が存在しない場合、ID が MobileDefaultListField の RenderingTemplate が使用されます。Windows SharePoint Services に付属しているフィールド レンダリング RenderingTemplate の操作の詳細については、「[方法] モバイル ページでフィールド レンダリングをカスタマイズする」を参照してください。
モバイル デバイス向けフィールド レンダリングとコンピュータ向けフィールド レンダリングの違い
Windows SharePoint Services 3.0 では、モバイル デバイス用のカスタム フィールド レンダリング コントロールによるフィールドのレンダリングは、コンピュータ用のカスタム フィールド レンダリング コントロールによるフィールドのレンダリングと似ていますが、次の相違点に注意してください。
モバイル ページは、モバイル以外のページとはまったく異なる種類のページであり、異なる RenderingTemplate のセットを参照します。
モバイルの RenderingTemplate は、DefaultTemplates.ascx ではなく MobileDefaultTemplates.ascx で宣言します。
モバイル フィールドのレンダリング コントロールには独自の名前空間 Microsoft.SharePoint.MobileControls があります (Microsoft.SharePoint.WebControls ではなく)。これらは、System.Web.UI.WebControls ではなく ASP.NET の System.Web.UI.MobileControls 名前空間のクラスから派生します。
モバイル フィールドのレンダリング コントロールの継承階層は、通常フィールドのレンダリング コントロールの階層とは異なります。たとえば、通常フィールドのレンダリングの TemplateBasedControl と FormComponent の機能は、SPMobileComponent クラスで統合されています。
モバイル用に作成するカスタムのフィールド レンダリング コントロールは、フィールドのレンダリングに、表示テンプレートよりコントロールの CreateChildControls メソッドに依存します。コンピュータ ブラウザ用に作成するカスタムのフィールド レンダリング コントロールでは、テンプレートへの依存度が高くなります。さらに、モバイル フィールドのレンダリングでは、コントロールは、多くの場合、CreateChildControls メソッドそのものを上書きしません。通常は、CreateChildControls によって呼び出される、CreateControlForDisplay、CreateControlForEdit、CreateControlForNew、および CreateControlForView の 4 つのメソッドの 1 つ以上が上書きされます。カスタム フィールドのレンダリングの詳細については、「カスタム フィールド レンダリングのパターン」と「[ウォークスルー] モバイル ページのカスタム フィールド レンダリング コントロールを作成する」を参照してください。
モバイル ブログ サイトの投稿リストのタイトル
SPMobilePostsListTitle は、ブログ サイトの現在のビューの種類が MyPosts または AllPosts のどちらであるかに基づいて、Moblog_MyPosts_Title または Moblog_AllPosts_Title を選択して、モバイル ブログ サイトの投稿リストのタイトルを表示します。
RenderingTemplates の入れ子
RenderingTemplates は入れ子にすることができます。「[方法] モバイル ホーム ページをカスタマイズする」の例を参照してください。
See Also
タスク
[ウォークスルー] モバイル ホーム ページをカスタマイズする
[方法] モバイル リスト ビュー ページおよびフォーム ページをカスタマイズする
[ウォークスルー] モバイル リスト ビュー ページをカスタマイズする
[ウォークスルー] モバイル フィールドのレンダリングをカスタマイズする
[方法] モバイル ページでフィールド レンダリングをカスタマイズする