Поделиться через


Практическое руководство. Добавление типа контента на сайт

Дата последнего изменения: 1 ноября 2010 г.

Применимо к: SharePoint Foundation 2010

Доступно на сайте SharePoint Online

Можно указать типы контента, добавляемые в конфигурацию определения пользовательского сайта, чтобы каждый раз, когда пользователь создает сайт этого типа, платформа Microsoft SharePoint Foundation делала эти типы контента доступными на сайте по умолчанию. После создания сайта можно добавить типы контента как часть компонента.

Регистрация типов контента в конфигурации определения сайта

Чтобы указать тип контента, добавляемый в конфигурацию определения пользовательского сайта, сначала необходимо создать тип контента в виде отдельного компонента, а затем указать этот компонент в разметке Collaborative Application Markup Language (CAML) конфигурации определения сайта, которая задается в файле Onet.xml определения сайта. Затем при создании нового сайта этого типа пользователем этот тип контента будет добавлен по умолчанию в коллекцию типов контента сайта.

Предупреждающая заметкаВнимание!

Изменение файла Onet.xml для всех встроенных типов сайтов SharePoint Foundation не поддерживается, поэтому следующую процедуру можно использовать только для пользовательских типов сайтов. Дополнительные сведения о создании конфигураций определения пользовательских сайтов см. в статье Создание настраиваемого определения и конфигурации сайта.

Указание типа контента в конфигурации определения сайта

  1. Создайте тип контента как отдельный компонент.

    Дополнительные сведения см. в статье Использование компонентов.

  2. Укажите ссылку на этот компонент в элементе Configuration (в файле Onet.xml), который определяет тип пользовательского сайта.

    1. Откройте файл Onet.xml в папке %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates\тип_сайта\XML, где тип_сайта — имя определения пользовательского сайта.

    2. В элементе Configuration добавьте ссылку на компонент с типом контента в элементе SiteFeatures или WebFeatures. Для идентификации компонента используется GUID (см. пример кода ниже).

      <SiteFeatures>
        <Feature ID="00BFEA71-1C5E-4A24-B310-BA51C3EB7A57" />
        <Feature ID="695B6570-ACDC-4A8E-8545-26EA7FC1D162" />
      </SiteFeatures>
      <WebFeatures>
        <Feature ID="00BFEA71-4EA5-48D4-A4AD-7EA5C011ABE5" />
        <Feature ID="00BFEA71-E717-4E80-DEAF-D0C71B360101" />
      </WebFeatures>
      

      Дополнительные сведения о различии этих элементов см. в статьях Элемент SiteFeatures (Site) и Элемент WebFeatures (Site).

Добавление типов контента на существующий сайт

Для добавления типов контента на сайт можно использовать декларативный XML-код или объектную модель SharePoint Foundation. Чтобы определить типы контента, декларативный XML-код использует схему определения типа контента. Определения типов контента объявляются в файле манифеста элементов компонента. После активации компонента типы контента добавляются на сайт.

При использовании объектной модели SharePoint Foundation необходимо создать класс, вложенный по отношению к классу SPFeatureReceiver. Разместите код, который создает типы контента и добавляет их на сайт, в методе FeatureActivated.

В большинстве случаев проще использовать декларативный XML-код. Однако декларативный XML-код обеспечивает меньшую гибкость по сравнению с объектной моделью, которая предоставляет доступ к возможностям всей платформы Microsoft .NET Framework и позволяет выполнять отладку во время выполнения. Оба метода поддерживаются шаблонами, поставляемыми в комплекте с разработки SharePoint в Microsoft Visual Studio 2010.

Добавление типа контента с использованием декларативного XML-кода

  1. Создайте компонент.

    Дополнительные сведения см. в статье Использование компонентов.

  2. Добавьте файл манифеста элементов в компонент.

  3. Добавьте элемент Elements в корневой элемент XML манифеста элементов.

  4. Добавьте элемент ContentType в качестве дочернего элемента по отношению к элементу Elements.

    ПримечаниеПримечание

    Значение, используемое для атрибута ID, имеет крайне специфический формат. Дополнительные сведения см. в статье Идентификаторы типов контента.

  5. Добавьте необходимые ссылки на столбцы. Дополнительные сведения см. в статье Практическое руководство: ссылка на столбец в типе контента.

  6. При необходимости добавьте определение DocumentTemplate.

    ПримечаниеПримечание

    Файл, на который ссылается элемент DocumentTemplate, должен уже быть создан на сайте или добавлен в компонент. Дополнительные сведения см. в статье Подготовка файла.

  7. Дополните определение типа контента при необходимости. Дополнительные сведения см. в статье Определения типов контента.

Пример

В приведенном ниже примере кода показан манифест элементов для компонента. Если компонент активирован, манифест элементов используется для создания и добавления столбца сайта в коллекцию столбцов сайта на текущем сайте. Затем манифест используется для создания и добавления типа контента сайта в коллекцию типов контента на текущем сайте.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">

  <!-- Create a site column. -->

  <Field ID="{060E50AC-E9C1-4D3C-B1F9-DE0BCAC300F6}"
         Name="Amount"
         DisplayName="Amount"
         Type="Currency"
         Decimals="2"
         Min="0"
         Required="FALSE"
         Group="Financial Columns" />

  <!-- Create a site content type that uses the column. -->

  <!-- Parent ContentType: Document (0x0101) -->
  <ContentType ID="0x0101000728167cd9c94899925ba69c4af6743e"
               Name="Financial Document"
               Group="Financial Content Types"
               Description="Base financial content type"
               Version="0">
    <FieldRefs>
      <FieldRef ID="{060E50AC-E9C1-4D3C-B1F9-DE0BCAC300F6}" Name="Amount" DisplayName="Amount" Required="FALSE"/>
    </FieldRefs>
  </ContentType>

</Elements>

Добавление типа контента с использованием серверного кода

  1. Создайте класс приемника компонента, наследованный от класса SPFeatureReceiver.

  2. Для доступа к коллекции типов контента, которые доступны для сайта, используйте свойство ContentTypes метода FeatureActivated.

    Это свойство возвращает объект SPContentTypeCollection.

  3. Создайте объект SPContentType. Дополнительные сведения см. в статье Создание типов контента.

  4. Используйте метод Add для добавления объекта SPContentType в коллекцию типов контента сайта.

Пример

В приведенном ниже примере кода показана реализация метода FeatureActivated в классе, являющемся вложенным по отношению к классу SPFeatureReceiver. Если компонент активирован, код в методе FeatureActivated создает столбец сайта и добавляет его в коллекцию столбцов сайта на текущем сайте. Затем код создает тип контента, который наследуется от типа контента Document (документ), и добавляет его в коллекцию типов контента на текущем сайте.

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    SPSite siteCollection = (SPSite)properties.Feature.Parent;
    SPWeb site = siteCollection.OpenWeb();

    /* Create a site column. */

    string amountFieldName = site.Fields.Add("Amount", SPFieldType.Currency, false);
    SPFieldCurrency amountField = (SPFieldCurrency)site.Fields.GetFieldByInternalName(amountFieldName);
    amountField.Group = "Financial Columns";
    amountField.DisplayFormat = SPNumberFormatTypes.TwoDecimals;
    amountField.MinimumValue = 0;
    amountField.Update();

    /* Create a site content type that uses the column. */

    // Get a content type to be the parent of a new Financial Document content type.
    SPContentType documentCType = site.AvailableContentTypes[SPBuiltInContentTypeId.Document];

    // Create the Financial Document content type.
    SPContentType financialDocumentCType = new SPContentType(documentCType, site.ContentTypes, "Financial Document");
    site.ContentTypes.Add(financialDocumentCType);

    // Note: A content type is not initialized until after it is added.
    financialDocumentCType = site.ContentTypes[financialDocumentCType.Id];
    financialDocumentCType.Group = "Financial Content Types";

    // Add the Amount column. Child content types inherit the column.
    SPFieldLink amountFieldRef = new SPFieldLink(amountField);
    financialDocumentCType.FieldLinks.Add(amountFieldRef);

    // Commit changes.
    financialDocumentCType.Update();

    site.Dispose();
    siteCollection.Dispose();
}
Public Overrides Sub FeatureActivated(ByVal properties As SPFeatureReceiverProperties)
    Dim siteCollection As SPSite = DirectCast(properties.Feature.Parent, SPSite)
    Dim site As SPWeb = siteCollection.OpenWeb()
    
    ' Create a site column. 
    
    
    Dim amountFieldName As String = site.Fields.Add("Amount", SPFieldType.Currency, False)
    Dim amountField As SPFieldCurrency = DirectCast(site.Fields.GetFieldByInternalName(amountFieldName), SPFieldCurrency)
    amountField.Group = "Financial Columns"
    amountField.DisplayFormat = SPNumberFormatTypes.TwoDecimals
    amountField.MinimumValue = 0
    amountField.Update()
    
    ' Create a site content type. 
    
    
    ' Get a content type to be the parent of a new Financial Document content type.
    Dim documentCType As SPContentType = site.AvailableContentTypes(SPBuiltInContentTypeId.Document)
    
    ' Create the Financial Document content type.
    Dim financialDocumentCType As New SPContentType(documentCType, site.ContentTypes, "Financial Document")
    site.ContentTypes.Add(financialDocumentCType)
    
    ' Note: A content type is not initialized until after it is added.
    financialDocumentCType = site.ContentTypes(financialDocumentCType.Id)
    financialDocumentCType.Group = "Financial Content Types"
    
    ' Add the Amount column. Child content types inherit the column.
    Dim amountFieldRef As New SPFieldLink(amountField)
    financialDocumentCType.FieldLinks.Add(amountFieldRef)
    
    ' Commit changes.
    financialDocumentCType.Update()
    
    site.Dispose()
    siteCollection.Dispose()
End Sub

См. также

Задачи

Добавление типа контента в список

Концепции

Введение в типы контента

Типы контента сайта и списка

Определения типов контента