2010-03-19 52 views
0

我有以下特點:的ContentType DocumentTemplate

<?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中,但是從我的read,_cts是the way來做到這一點。我究竟做錯了什麼?

回答

2

豐富,我不完全知道發生了什麼,因爲我創建爲你指定的,它工作正常,我用你的功能和元素文件功能。

雖然有一個區別。

當我創建的內容類型庫中的新文檔,模板網址是

http://myserver/sites/testsite/Shared%20Documents/Forms/Meeting分鐘/ MeetingMinutes.docx

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

不知怎的,你的內容類型似乎在尋找模板的錯誤文件夾。我希望能給你一些線索。

+1

因此*這是* Folder TargetName的用途。我從未完全理解這一點。我最初從schema.xml中離開了這個問題,因爲我不認爲這很重要。爲了讓我的錯誤更清楚,我編輯了這個問題。謝謝! – 2010-03-22 13:35:45

+0

很酷,我也一直在想這個!感謝您指出了這一點。 – 2010-03-22 14:11:16

1

我曾與列表內容類型的文檔模板完全一樣的問題。

我所做的只是SharePoint從網站創建庫時所做的工作:在名稱與內容類型相同的子文件夾中,在庫的「Forms」文件夾內複製文檔模板。

你只需要在你的項目中的某個位置添加一個模塊元素:

<?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> 

它爲我工作。