在SP2010中基于自定义布局部署页面

时间:2013-03-21 07:25:54

标签: sharepoint sharepoint-2010

我能够成功部署自定义页面布局并在母版库中查看。我也可以从这个布局手动创建页面。

我想要做的是在我的网站定义中有一个页面,基于自定义布局自动部署包。

如何部署页面并告诉该页面使用哪种布局?

1 个答案:

答案 0 :(得分:5)

使用模块,您可以从PageLayout

创建Page实例

我猜您的PageLayouts PageName为Home.aspx,而实例名称应为Home.aspx

希望您的Pagelayouts上传到_catalogs/masterpage目录。

 <Module Name="PagesLayouts"
      Url="_catalogs/masterpage"
      Path=""
      RootWebOnly="False">
  <File Url="YourModuleName/Home.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE"></File>
</Module>

比:

<Module Name="CustomPages" Url="Pages" Path="" RootWebOnly="FALSE">
 <File Name="Home.aspx" Url="Home.aspx" Type="GhostableInLibrary" Path="Home.aspx" IgnoreIfAlreadyExists="TRUE">
  <Property Name="Title" Value="Home" />
  <Property Name="PublishingPageLayout" Value="~SiteCollection/_catalogs/masterpage/Home.aspx" />
  <Property Name="ContentType" Value="Page" />
 </File>
</Module> 

见这里:http://kamilmka.wordpress.com/2011/03/30/create-sharepoint-page-instance-from-a-feature/

更新:

我刚刚创建了正确理解的演示项目。你可以看到我的解决方案结构。 刚添加一个模块名称是PageLayouts并放置一个PageLayout页面。

enter image description here

我使用的模块的完整Element.xml文件:

 <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
 <Module Name="PageLayouts" Url="_catalogs/masterpage" Path="" RootWebOnly="TRUE">
 <File Path="PageLayouts\CustomPageLayouts.aspx" Url="CustomPageLayouts.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE">
    <Property Name="Title" Value="Custom General Page" />
    <Property Name="MasterPageDescription" Value="Custom General page layout" />
    <Property Name="ContentType" Value="$Resources:cmscore,contenttype_pagelayout_name;" />
    <Property Name="PublishingPreviewImage" Value="~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/WelcomeSplash.png, ~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/WelcomeSplash.png" />
  <Property Name="PublishingAssociatedContentType" Value=";#$Resources:cmscore,contenttype_welcomepage_name;;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF390064DEA0F50FC8C147B0B6EA0636C4A7D4;#" />
  </File>
 </Module>
 <!--Create Page instance from Page layouts of CustomPageLayouts.aspx-->
 <Module Name="CustomPages" Url="Pages" Path="" RootWebOnly="FALSE">
   <File Name="Home.aspx" Url="Home.aspx" Type="GhostableInLibrary" Path="PageLayouts\CustomPageLayouts.aspx" IgnoreIfAlreadyExists="TRUE">
    <Property Name="Title" Value="Home" />
    <Property Name="PublishingPageLayout" Value="~SiteCollection/_catalogs/masterpage/CustomPageLayouts.aspx"/>
    <Property Name="ContentType" Value="Page" />
  </File>
</Module>

希望它有所帮助!!