我们有数百个文档库,遍布MOSS 2007 SharePoint网站中的各种网站集。
问题是,除了“新文档”和“新文件夹”内容类型之外,我还要添加内容类型:“链接到文档”内容类型(0x01010A)。这个新的内容类型应该适用于所有现有和新的文档库。
我尝试了什么:
我认为我可以将以下内容添加到<ContentTypes></ContentTypes>
节点内某处的schema.xml中:
<!-- Link to Document Content Type -->
<ContentTypeRef ID="0x01010A" />
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\Publishing\Pages\schema.xml
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\DocumentLibrary\DocLib\schema.xml
这似乎已将内容类型添加到库中,但它不会显示在“新建”菜单下(仍然只显示“文档”和“文件夹”内容类型)。如果我设置“允许管理内容类型?”为“是”然后它出现。
TL;博士
问:如何将“链接到文档”内容类型添加到所有文档库并将其显示在“新建”菜单中?
答案 0 :(得分:1)
如果您对SharePoint对象模型感到满意,则可以通过编程方式将内容类型添加到列表或库中。因此,你可以编写一个功能接收器,甚至只是一个控制台应用程序,在服务器上运行,迭代网站中的所有列表并添加内容类型。
您的代码看起来像:
void AddContentTypeToList(string contentTypeId, SPSite site, SPList list)
{
SPContentTypeId ctid = new SPContentTypeId(contentTypeId);
SPContentType ct = site.RootWeb.ContentTypes[ctid];
if (list.ContentTypes[ct.Name] == null)
{
list.ContentTypes.Add(ct);
list.Update();
}
}
答案 1 :(得分:0)
要manage buttons in new menu,请使用SPFolder.UniqueContentTypeOrder属性(SPList.RootFolder.UniqueContentTypeOrder会让你到那里)。
要将内容类型添加到新库...嗯......可能会创建新的列表定义,添加一个停用文档库并激活自定义文档库功能的功能?如果您必须修改现有的生产SharePoint Web,可能需要付出太多努力。
顺便说一句,修改内置功能是不明智的(更新可以覆盖它们)。为此目的,有一个ContentTypeBinding要素元素。但是它只是将ContentType绑定到1个列表。
答案 2 :(得分:0)
在做了一些调查之后,我发现通过更改..\12\TEMPLATE\FEATURES\DocumentLibrary\DocLib\schema.xml
我可以将链接到文档内容类型添加到所有新文档库。更改schema.xml然后执行IISRESET不会更改现有库。
为了做到这一点,我的schema.xml的开头看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<List xmlns:ows="Microsoft SharePoint" Title="$Resources:shareddocuments_Title;" Direction="$Resources:Direction;" Url="Shared Documents" BaseType="1" EnableContentTypes="TRUE">
<!-- Link to Document Content Type - Added EnableContentTypes="TRUE" -->
<MetaData>
<ContentTypes>
<ContentTypeRef ID="0x0101">
<Folder TargetName="Forms/Document" />
</ContentTypeRef>
<ContentTypeRef ID="0x0120" />
<!-- Link to Document Content Type -->
<ContentTypeRef ID="0x01010A" />
</ContentTypes>
由于这没有改变现有的文档库,我需要编写一个控制台应用程序,它使用另外两个答案中指定的代码来更新每个库。
答案 3 :(得分:0)
需要将URL字段添加到元素中的Schema.XML中。源可以在Template目录中的一个源文件中找到(现在无法查找)。只需复制粘贴“URL”元素即可。