3

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

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

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

4

1 回答 1

5

使用模块,您可以从您的页面创建实例PageLayout

我猜你的 PageLayouts PageNameHome.aspx比实例名称应该是Home.aspx

希望您的页面布局上传到_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 Page。

在此处输入图像描述

我使用过的模块的完整 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>

希望能帮助到你!!

于 2013-03-21T07:46:03.267 回答