使用“站点定义”将内容类型添加到列表中

时间:2010-07-29 15:06:40

标签: sharepoint-2010 content-type site-definition

使用SharePoint 2010和Visual Studio我创建了一个网站定义(继承自发布网站),该网站定义正确创建了所有必需的列表,现在包含“Pages”文档库中的页面实例。

页面使用正确的自定义页面布局和正确的内容类型,但是,因为“页面”库默认只接受文章,空白和欢迎页面,它不知道我的自定义内容类型,因此页面不起作用如预期的那样。

我已尝试在“List Added”事件中添加EventListener,但没有成功,调试甚至没有在我的断点处中断,我还尝试了List Add,List Item added和Site Provisioned事件。其中任何一个似乎都没有我想要的方式。

我在下面的网站定义中包含了XML,如何将自定义内容类型添加到页面库中,以便我不必手动添加它?

<?xml version="1.0" encoding="utf-8"?>
<Project Title="Custom_Site_Definition" Revision="2" ListDir="" xmlns:ows="Microsoft SharePoint" xmlns="http://schemas.microsoft.com/sharepoint/">
  <NavBars>
    <NavBar Name="SharePoint Top Navbar" Url="/Site Template" ID="1002" />
<!-- removed -->
  </NavBars>
  <Configurations>
    <Configuration ID="0" Name="Custom_Site_Definition">
      <Lists />
      <WebFeatures>
        <!-- Include the common WSSListTemplateFeatures used by CMS -->
        <Feature ID="00BFEA71-DE22-43B2-A848-C05709900100" > </Feature>
        <Feature ID="00BFEA71-E717-4E80-AA17-D0C71B360101" > </Feature>
        <Feature ID="00BFEA71-52D4-45B3-B544-B1C71B620109" > </Feature>
        <Feature ID="00BFEA71-A83E-497E-9BA0-7A5C597D0107" > </Feature>
        <Feature ID="00BFEA71-4EA5-48D4-A4AD-305CF7030140" > </Feature>
        <Feature ID="00BFEA71-F600-43F6-A895-40C0DE7B0117" > </Feature>

        <Feature ID="00BFEA71-4EA5-48D4-A4AD-7EA5C011ABE5">
        </Feature>



        <Feature ID="22A9EF51-737B-4ff2-9346-694633FE4416">
          <Properties xmlns="http://schemas.microsoft.com/sharepoint/">
            <Property Key="ChromeMasterUrl" Value=""/>
            <Property Key="WelcomePageUrl" Value="$Resources:osrvcore,List_Pages_UrlName;/at-a-glance.aspx"/>
            <Property Key="PagesListUrl" Value=""/>
            <Property Key="AvailableWebTemplates" Value=""/>
            <Property Key="AvailablePageLayouts" Value=""/>
            <Property Key="SimplePublishing" Value="true" />
          </Properties>
        </Feature>
        <Feature ID="541F5F57-C847-4e16-B59A-B31E90E6F9EA">
          <Properties xmlns="http://schemas.microsoft.com/sharepoint/">
            <Property Key="InheritGlobalNavigation" Value="true"/>
            <Property Key="ShowSiblings" Value="true"/>
            <Property Key="IncludeSubSites" Value="true"/>
          </Properties>
        </Feature>
        <Feature ID="94C94CA6-B32F-4da9-A9E3-1F3D343D7ECB">
          <!-- Office SharePoint Server Publishing -->
        </Feature>
      </WebFeatures>
      <Modules>
        <Module Name="Home" />
      </Modules>
    </Configuration>
  </Configurations>
  <Modules>
    <Module Name="Home" Url="$Resources:osrvcore,List_Pages_UrlName;" Path="">
      <File Url="at-a-glance.aspx" Type="GhostableInLibrary" Level="Draft" >
        <Property Name="PublishingPageLayout" Value="~SiteCollection/_catalogs/masterpage/Custom Article Page.aspx, $Resources:cmscore,PageLayout_WelcomeLinks_Title;" />
      </File>
<!-- removed -->
    </Module>
  </Modules>
</Project> 

1 个答案:

答案 0 :(得分:3)

没关系,我明白了......最终

解决方案是

  1. 将功能添加到网站定义项目,其elements.xml文件中包含以下内容
  2. <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
      <ContentTypeBinding ContentTypeId="0x010100899F73B9F6814EA9AED9876985F28B39" ListUrl="Pages" />
    </Elements>
    

    然后在onet.xml文件中添加功能依赖项

    <!-- Binds custom content types to Pages library.-->
    <Feature ID="8290db1f-0a87-44f3-be22-28c61f9c8965">
    </Feature>
    

    最后在文件末尾的模块中添加每个页面(包括内容类型)

     <File Url="at-a-glance.aspx" Type="GhostableInLibrary" Level="Draft" >
            <Property Name="Title" Value="At a glance" />
            <Property Name="ContentType" Value="Custom_ContentTypes_Publishing - CustomFive" />
            <Property Name="PublishingPageLayout" Value="~SiteCollection/_catalogs/masterpage/Custom Article Page.aspx, $Resources:cmscore,PageLayout_WelcomeLinks_Title;" />
     </File>