У меня есть следующая особенность:
<?xml version="1.0" encoding="utf-8"?>
<Feature Id="9A3C5D02-A2EB-4725-97F7-CDA6DE319F1B"
Title="My Custom Types"
Scope="Site"
DefaultResourceFile="core"
Hidden="TRUE"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="Elements.xml" />
<ElementFile Location="templates/MeetingMinutes.docx" />
</ElementManifests>
</Feature>
Который содержит следующий Elements.xml:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="Templates" Url="_cts/Meeting Minutes" Path="templates" RootWebOnly="TRUE">
<File Url="MeetingMinutes.docx" Type="Ghostable" />
</Module>
<ContentType
ID="0x01010066DD088A6B8B46BCA775CCD119FBB3E8"
Name="Meeting Minutes"
Group="Custom Content Types"
Version="0">
<FieldRefs />
<DocumentTemplate TargetName="MeetingMinutes.docx"/>
</ContentType>
</Elements>
Затем я использую этот ContentType в пользовательском шаблоне списка:
<ContentTypes>
<ContentTypeRef ID="0x0101">
<Folder TargetName="Forms/Document" />
</ContentTypeRef>
<ContentTypeRef ID="0x01010066DD088A6B8B46BCA775CCD119FBB3E8">
<Folder TargetName="Forms/Document" />
</ContentTypeRef>
<ContentTypeRef ID="0x0120" />
</ContentTypes>
Я развертываю решение, активирую функцию и создаю экземпляр шаблона списка. Я захожу в библиотеку и выбираю «Настройки»> «Настройки библиотеки документов»> «Типы содержимого: протокол собрания»> «Родитель: протокол собрания»> «Дополнительные настройки». Я сейчас в расширенных настройках типа контента сайта. URL существующего шаблона документа - MeetingMinutes.docx, и есть ссылка (Изменить шаблон), которая указывает на http://myserver/sites/testsite/_cts/Meeting%20Minutes/MeetingMinutes.docx. Все блестяще.
Но я дважды нажал кнопку "Назад", чтобы вернуться в настройки типа содержимого списка. На этот раз, когда я нажимаю Расширенные настройки, URL-адрес существующего шаблона документа по-прежнему остается MeetingMinutes.docx, но ссылка (Изменить шаблон) отсутствует. Настораживает.
Нажав на кнопку, я возвращаюсь на AllItems.aspx и нажимаю «Создать»> «Протокол встречи». Когда Word загружается, я вижу небольшое диалоговое окно «Открытие», в котором говорится: «Открытие: http://myserver/sites/testsite/Shared%20Documents/Forms/Document/MeetingMinutes.docx,», на которое Word отвечает: «Word не удалось прочитать этот документ.
Таким образом, шаблон документа работает правильно в типе контента сайта (где он мне не нужен), но не работает в типе контента списка (там, где он мне действительно нужен). Теперь я знаю, что мог бы поместить это в _layouts, но из того, что я прочитал , _cts это способ сделать это. Что я делаю не так?