Share via


Procedimiento para agregar un tipo de contenido a un sitio

Última modificación: lunes, 01 de noviembre de 2010

Hace referencia a: SharePoint Foundation 2010

Disponible en SharePoint Online

Puede especificar tipos de contenido para incluirlos en una configuración de definición de sitio personalizada de modo que cada vez que un usuario cree un sitio de dicho tipo, Microsoft SharePoint Foundation ponga estos tipos de contenido de sitio a disposición del sitio de manera predeterminada. Después de crear un sitio, puede agregar tipos de contenido como parte de una característica.

Registro de tipos de contenido en una configuración de definición de sitio

Para especificar un tipo de contenido para incluir en una configuración de definición de sitio personalizada, cree primero el tipo de contenido como una característica independiente y, a continuación, haga referencia a dicha característica con algún marcado Lenguaje de marcado de la aplicación de colaboración (CAML) en la configuración de definición de sitio en el archivo Onet.xml de la definición de sitio. A continuación, cuando un usuario cree un nuevo sitio de ese tipo, el tipo de contenido se incluirá de manera predeterminada en la colección de tipos de contenido del sitio.

Nota de precauciónPrecaución

No se admite la modificación del archivo Onet.xml por cualquiera de los tipos de sitios integrados de SharePoint Foundation, por lo que puede usar el siguiente procedimiento solo en tipos de sitios personalizados. Para obtener más información acerca de la creación de configuraciones de definición del sitio personalizada, vea Procedimiento para crear una definición y una configuración personalizadas de un sitio.

Para especificar un tipo de contenido en una configuración de definición de sitio

  1. Cree el tipo de contenido como una característica independiente.

    Para obtener más información, vea Uso de características.

  2. Haga referencia a esa característica en el elemento Configuration (en el archivo Onet.xml) que define el tipo de sitio personalizado:

    1. Abra el archivo Onet.xml en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates\tipo_de_sitio\XML, donde tipo_de_sitio es el nombre de la definición del sitio personalizada.

    2. En el elemento Configuration, agregue una referencia a la característica de tipo de contenido en el elemento SiteFeatures o WebFeatures. La característica se identifica por su GUID. Por ejemplo:

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

      Para obtener más información acerca de las diferencias entre estos dos elementos, vea Elemento SiteFeatures (Site) y Elemento WebFeatures (Sitio).

Adición de tipos de contenido a un sitio existente

Para agregar tipos de contenido a un sitio, puede usar XML declarativo o el modelo de objetos de SharePoint Foundation. El XML declarativo usa el esquema de definición de tipo de contenido para definir los tipos de contenido. Las definiciones de tipo de contenido se declaran en el archivo de manifiesto de elemento de una característica y los tipos de contenido se agregan a un sitio, cuando se activa la característica.

Cuando se usa el modelo de objetos de SharePoint Foundation, debe usar la clase SPFeatureReceiver como subclase. Coloque el código que crea los tipos de contenido y los agrega al sitio en el método FeatureActivated.

Normalmente, el XML declarativo es más fácil de escribir. Sin embargo, el XML declarativo generalmente ofrece menos flexibilidad que el modelo de objetos, que tiene acceso a las funcionalidades de Microsoft .NET Framework completo y se puede depurar en tiempo de ejecución. Ambos enfoques son compatibles con las plantillas proporcionadas con las Herramientas de desarrollo de SharePoint en Microsoft Visual Studio 2010.

Para agregar un tipo de contenido mediante XML declarativo

  1. Cree una característica.

    Para obtener más información, vea Uso de características.

  2. Agregue un archivo de manifiesto de elemento a la característica.

  3. Agregue un elemento Elements como elemento raíz XML en el manifiesto de elemento.

  4. Agregue un elemento ContentType como elemento secundario del elemento Elements.

    Nota

    El valor que se usa para el atributo ID tiene un formato muy específico. Para obtener más información, vea Identificadores de tipo de contenido.

  5. Agregue las referencias a columnas que desee. Para obtener más información, vea Procedimiento para hacer referencia a una columna en un tipo de contenido.

  6. Agregue una definición DocumentTemplate si lo desea.

    Nota

    El archivo al que hace referencia el elemento DocumentTemplate ya debe existir en el sitio o se debe incluir con la característica. Para obtener más información, vea Procedimientoa para aprovisionar un archivo.

  7. Complete la definición de tipo de contenido de la forma deseada. Para obtener más información, vea Definiciones de tipo de contenido.

Ejemplo

El ejemplo siguiente es el manifiesto de elemento de una característica. Cuando se activa la característica, el manifiesto de elemento se usa para crear una columna de sitio y agregarla a la colección de columnas de sitio en el sitio actual. A continuación, el manifiesto se usa para crear un tipo de contenido de sitio y agregarlo a la colección de tipos de contenido del sitio actual.

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

Para agregar un tipo de contenido mediante código de servidor

  1. Cree una clase de receptor de características que herede de la clase SPFeatureReceiver.

  2. En el método FeatureActivated use la propiedad ContentTypes para obtener acceso a la colección de tipos de contenido del sitio.

    Esta propiedad devuelve un objeto SPContentTypeCollection.

  3. Cree un objeto SPContentType. Para obtener más información, vea Creación de tipos de contenido.

  4. Use el método Add para agregar el objeto SPContentType a la colección de tipos de contenido del sitio.

Ejemplo

En el ejemplo siguiente se muestra la implementación del método FeatureActivated en una subclase de la clase SPFeatureReceiver. Cuando se activa la característica, el código del método FeatureActivated crea una columna de sitio y lo agrega a la colección de columnas de sitio del sitio actual. A continuación, el código crea un tipo de contenido que hereda del tipo de contenido Document y lo agrega a la colección de tipos de contenido del sitio actual.

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

Vea también

Tareas

Procedimiento para agregar un tipo de contenido a un sitio

Conceptos

Introducción a los tipos de contenido

Tipos de contenido de listas y sitios

Definiciones de tipo de contenido