¿Por qué esta función de sitio no está activada cuando creo un sitio nuevo por mi plantilla web personalizada?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/64431

  •  10-12-2019
  •  | 
  •  

Pregunta

Estoy usando SharePoint 2010 y VS2010.

He creado un número web personalizado y comience desde una copia de un equipo de equipo.En mi onet.xml veo los siguientes elementos de función del sitio:

<SiteFeatures>
    <!-- BasicWebParts Feature -->
    <Feature ID="00BFEA71-1C5E-4A24-B310-BA51C3EB7A57" />
    <!-- Three-state Workflow Feature -->
    <Feature ID="FDE5D850-671E-4143-950A-87B473922DC7" />
  </SiteFeatures>

He creado una nueva colección de sitios de la plantilla del sitio "Publish Site" Implementé mi plantilla web personalizada a esta colección de sitios. Creo un nuevo sitio y selecciono MI Plantilla web personalizada. Tengo un error: "La plantilla del sitio requiere que la característica FDE5D850-671E-4143-950A-87B4739222DC7 se active en la colección del sitio"

Cuando voy a las funciones de la colección del sitio y habilito esta función "FLUJO DE TRABAJO TRES-ESTADO: FDE5D850-671E-4143-950A-87B473922DC7" Funciona.

Pero no entiendo, ¿por qué necesito hacer este manual?En mi onet.xml de mi plantilla web personalizada, he declarado que esta función se active en el elemento SiteFeature.

¿Fue útil?

Solución

El archivo ONET.XML se divide en dos partes, primero es el "SiteFeatures" y el segundo llamado "WebFeatures". La sección "SitsonFeatures" que sostiene las funciones del sitio comienza a activar todas las funciones solo al crear una colección de sitios. La sección "WebFeatures" que sostiene las funciones web comienza a activar todas las funciones de la Web Scoped solo al crear un sitio (como lo intentó).

La solución es desencadenar la función de colección de sitios al alcance de la función con función de ámbito web.

Los pasos son:

a) Crear una función de alojamiento web vacío y en el evento "Featurefated" Agregue el siguiente código.

  public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            try
            {
                //Ensure that scope is correctly set
                if (properties.Feature.Parent is SPWeb)
                {
                    SPWeb web = (SPWeb)properties.Feature.Parent;


                    foreach (SPFeatureProperty property in properties.Feature.Properties)
                    {
                        Guid featureGuid = new Guid(property.Value);
                        //Verify feature status
                        SPFeature feature = web.Site.Features[featureGuid];
                        if (feature == null)
                        {
                            //Activate site collection scoped feature, if requested and not currently activated
                            web.Site.Features.Add(featureGuid);
                        }
                    }
                }
            }
            catch (Exception ex)
            {}
        }

b) en el archivo ONET.XML en el nodo "WebFeature" Agregue el siguiente XML

 <WebFeatures>
       <!-- Custom Site collection scoped feature activation -->
        <Feature ID="YourEmptyFeatureGuid">
          <Properties xmlns="http://schemas.microsoft.com/sharepoint/">
            <Property Key="SiteScopedGUID" Value="FDE5D850-671E-4143-950A-87B473922DC7"/>
          </Properties>
        </Feature>
 </WebFeatures>

  • En el elemento ID de función, agregue la identificación de su función vacía
  • En la clave Key="SitescopedGuid" Elemento en el valor Agregue la identificación de la función de colección del sitio que desea activar.

    Eso es todo. Implemente su solución y debe funcionar.

Licenciado bajo: CC-BY-SA con atribución
scroll top