2010-12-13 16 views
2

私はカスタムページレイアウトを持つSharePoint発行サイトで作業しています。私はデフォルトのWebパーツを提示するカスタムレイアウトの1つにWebパーツゾーンを追加して、ユーザーがページを作成したときのプロパティを削除または変更できるようにしたいと考えています。私はこれをしようとしているSharepoint 2010パブリッシングサイトのカスタムページレイアウトWebパーツゾーン

<WebPartPages:WebPartZone id="zone1" runat="server" title="Zone 1"> 
<ZoneTemplate> 
<Something:LookingForLinks runat="server" id="wp_lookingForLinks"/> 
</ZoneTemplate> 
</WebPartPages:WebPartZone> 

Webパーツゾーンは、Webパーツを追加するための利用可能ですが、ページが作成された後、私のデフォルトのWebパーツが存在しません。私はここに何かを逃していますか

答えて

1

Webパーツをページに追加するために、サイト定義で提供されるOnet.xmlを使用することをお勧めします。ページレイアウトは、カスタムサイト用にパーソナライズするためではなく、ページレイアウトを提供するためのものです。したがって、この目的でOnet.xmlを使用してください。

+0

私は例を挙げてください。私はそれほどフォローしていません。また、私は5つの異なるページレイアウトがあり、編集可能なWebパーツのさまざまな組み合わせがあります。 – ScottE

+0

http://msdn.microsoft.com/en-us/vcsharp/ff623012.aspxビデオリンク –

+0

ありがとうございます。でも、それは本当に役に立ちました。ユーザーがそのWebパーツを削除したり、そのプロパティを変更したりするにはどうすればよいですか? – ScottE

7

また、サイトレイアウト全体を作成するのではなく、個々の機能としてページレイアウトを展開することもできます。そうすれば、ページレイアウトを任意のSharePoint公開サイトに展開できます。 VS 2010を使用している場合は、まずSharePointモジュールプロジェクトを開始します。レイアウトのaspxファイルをプロジェクトに追加します。 elements.xmlファイルを次のように変更します。

<?xml version="1.0" encoding="utf-8"?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <Module Name="Page Layouts" Url="_catalogs/masterpage" RootWebOnly="True"> 
    <File Path="Page Layouts\Layout1.aspx" Url="Layout1.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="True"> 
     <Property Name="Title" Value="My Layout 1" /> 
     <Property Name="ContentType" Value="$Resources:cmscore,contenttype_pagelayout_name;" /> 
    </File> 
    </Module> 
</Elements> 

これはレイアウトを展開し、新しい公開ページとして利用できるようにします。 Webパーツが新しいページでインスタンス化されるようにするには、webpart定義で<File>要素を変更します。例えば、私はこのようなゾーン1内の新しいページに作成するコンテンツエディタWebパーツを定義することができます。

<?xml version="1.0" encoding="utf-8"?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <Module Name="Page Layouts" Url="_catalogs/masterpage" RootWebOnly="True"> 
    <File Path="Page Layouts\Layout1.aspx" Url="Layout1.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="True"> 
     <Property Name="Title" Value="My Layout 1" /> 
     <Property Name="ContentType" Value="$Resources:cmscore,contenttype_pagelayout_name;" /> 
     <AllUsersWebPart WebPartZoneID="Zone1" WebPartOrder="1"> 
     <![CDATA[ 
       <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2"> 
       <Assembly>Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly> 
       <TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName> 
       <Title>Content Editor</Title> 
       <FrameType>Default</FrameType> 
       <FrameState>Normal</FrameState> 
       <Description></Description> 
       <Height /> 
       <Width /> 
       <AllowRemove>true</AllowRemove> 
       <AllowZoneChange>true</AllowZoneChange> 
       <AllowMinimize>true</AllowMinimize> 
       <AllowConnect>true</AllowConnect> 
       <AllowEdit>true</AllowEdit> 
       <AllowHide>true</AllowHide> 
       <IsVisible>true</IsVisible> 
       <DetailLink /> 
       <HelpLink /> 
       <HelpMode>Modeless</HelpMode> 
       <Dir>Default</Dir> 
       <PartImageSmall /> 
       <MissingAssembly>Cannot import this Web Part.</MissingAssembly> 
       <PartImageLarge>/_layouts/images/homepage.gif</PartImageLarge> 
       <IsIncludedFilter /> 
       <ExportControlledProperties>true</ExportControlledProperties> 
       <ContentLink xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" /> 
       <Content xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor"> 
       </Content> 
       <PartStorage xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" /> 
       </WebPart>   
     ]]> 
     </AllUsersWebPart> 
    </File> 
    </Module> 
</Elements> 

これは全く新しいサイト定義を作成するよりも実用的でなければなりません。お役に立てれば。

2

SharePoint機能を使用してこれらのページレイアウトを展開し、機能を何回か有効または無効にすると、Webパーツが機能を再アクティブ化する回数だけページに表示されます。 SharePointには、ページ上にWebパーツのインスタンスを1つだけ配置する簡単な方法はないようです。

+1

+1 - 私は今この問題に対処しようとしています。論理的な答えは、これを扱うフィーチャー・イベント・レシーバーを実装することだと思います(すでにこれを行う方法を説明しているリソースがあります)。まったく別の方法もあります:http://code.msdn.microsoft.com/Adding-default-web-parts-ab7aec72 –