Добавление ContentTypes в список с помощью SiteDefinition
Используя SharePoint 2010 и Visual Studio, я создал определение сайта (унаследованное от сайта публикации), которое правильно создает все необходимые списки и теперь включает экземпляры страниц в библиотеку документов "Страницы".
Страницы используют правильный пользовательский макет страницы и правильный тип контента, однако, поскольку библиотека "pages" принимает только страницы Article, Blank и Welcome, по умолчанию она не знает о моих пользовательских типах контента, и поэтому страница не работает должным образом.
Я попытался добавить EventListener в событие "Список добавленных", но безуспешно, отладка даже не прерывается на моих точках останова, я также попробовал добавить события добавления списков, элементов списка и событий, предоставленных сайтом. Ничто из этого не работает так, как я хочу.
Я включил 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 ответ
Неважно, я понял... в конце концов
Решение было
- Добавьте элемент в проект определения сайта со следующим в его файле elements.xml
<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>