ContentType DocumentTemplate не найден в списке - PullRequest
0 голосов
/ 19 марта 2010

У меня есть следующая особенность:

<?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 это способ сделать это. Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 20 марта 2010

Рич, я не совсем уверен, что происходит, потому что я создал объект, используя ваши файлы элементов и элементов, как вы указали, и он работает правильно для меня.

Хотя есть одно отличие.

Когда я создаю новый документ в библиотеке из типа содержимого, URL-адрес шаблона равен

http://myserver/sites/testsite/Shared%20Documents/Forms/Meeting Минуты / MeetingMinutes.docx

Не

http://myserver/sites/testsite/Shared%20Documents/Forms/Document/MeetingMinutes.docx

Каким-то образом ваш тип контента, похоже, ищет не в той папке для шаблона. Я надеюсь, что это даст вам некоторые подсказки.

1 голос
/ 31 декабря 2011

У меня была такая же проблема с шаблоном документа для типа содержимого списка.

Что я сделал, так это то, что SharePoint делает при создании библиотеки на веб-сайте: продублируйте шаблон документа в папке «Формы» библиотеки во вложенной папке, имя которой совпадает с именем типа контента.

Вам просто нужно добавить элемент модуля где-нибудь в вашем проекте:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Name="MeetingMinutesListInstanceTemplate" Url="Shared Documents/Meeting Minutes" Path="templates" RootWebOnly="TRUE">             
    <File Url="MeetingMinutes.docx" Type="Ghostable" />
  </Module>
</Elements>

Это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...