将内容类型添加到所有文档库

时间:2010-02-04 20:54:04

标签: sharepoint sharepoint-2007 moss

我们有数百个文档库,遍布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;博士

问:如何将“链接到文档”内容类型添加到所有文档库并将其显示在“新建”菜单中?

4 个答案:

答案 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”元素即可。