2010-12-13 208 views
2

我正在處理具有自定義頁面佈局的SharePoint發佈網站。我想向其中一個自定義佈局添加一個Web部件區域,以呈現默認Web部件,然後用戶可以刪除或更改創建頁面時的屬性。Sharepoint 2010發佈網站自定義頁面佈局webpart區域

我想這一點:

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

的Web部件區域是可添加的webpart,而是創建了一個頁面後,我的默認Web部件不存在。我在這裏錯過了什麼嗎?

回答

1

我建議使用隨網站定義提供的Onet.xml來添加一個webpart到頁面。頁面佈局用於提供頁面佈局,而不是爲您的自定義站點進行個性化設置。因此,請爲此使用Onet.xml

+0

請您指點我一個示例嗎?我不太喜歡。另外,我有5種不同的頁面佈局,它們會有不同的應該可編輯的Web部件組合。 – ScottE 2010-12-13 12:15:47

+0

http://msdn.microsoft.com/en-us/vcsharp/ff623012.aspx視頻鏈接 – 2010-12-13 13:03:25

+0

謝謝,但這對我真的很有幫助。用戶如何移除該Web部件或更改其屬性? – ScottE 2010-12-13 13:39:04

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> 

這將部署您的佈局並使其可用於新的發佈頁面。現在,爲了讓webpart在新頁面中實例化,可以使用webpart定義修改<File>元素。例如,我可以定義一個內容編輯器web部件將在1區新頁面創建這樣的:

<?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 - 我正在試圖解決這個問題。我想合乎邏輯的答案是實現一個功能事件接收器來處理這個問題(有些資源已經解釋瞭如何做到這一點)。還有一個完全不同的選擇:http://code.msdn.microsoft.com/Adding-default-web-parts-ab7aec72 – 2012-05-30 12:09:47

相關問題