Perché questa funzione del sito non è attivata quando creo un nuovo sito dal mio modello web personalizzato?

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

  •  10-12-2019
  •  | 
  •  

Domanda

Sto usando SharePoint 2010 e VS2010.

Ho creato un webTemplates personalizzato e inizia da una copia di un teamsite.Nel mio onet.xml Vedo i seguenti elementi di funzionalità del sito:

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

Ho creato una nuova collezione di siti dal modello del sito "Publish sito" Ho schierato il mio modello web personalizzato per questa raccolta di siti. Creo un nuovo sito e seleziona il mio modello web personalizzato. Ho ricevuto un errore: "Il modello del sito richiede che la funzione FDE5D850-671E-4143-950A-87B473922DC7 sia attivata nella collezione del sito"

Quando vado alle funzioni della raccolta del sito e abilitare questa funzione "Flusso di lavoro a tre stati: FDE5D850-671E-4143-950A-87B473922DC7" Funziona.

Ma non capisco, perché ho bisogno di fare questo manuale ??Nel mio Onet.xml del mio modello web personalizzato ho dichiarato che questa funzione essere attivata nell'elemento di sedificatura.

È stato utile?

Soluzione

Il file Onet.xml è diviso in due parti, prima è le "Situazioni" e il secondo chiamato "WebFeatures". La sezione "Situazione" che tiene le funzionalità del sito inizia a attivare tutte le funzionalità solo durante la creazione di una raccolta di siti. La sezione "WebFeatures" che contiene le funzionalità Web avvia attivando tutte le funzionalità del Web Scoped solo durante la creazione di un sito (come hai provato).

La soluzione è per attivare la funzione di raccolta del sito SCOPED utilizzando la funzione SCOPED Web.

I passaggi sono:

A) Creare una funzione SCAMPED Web vuota e nell'evento "FeatureA attivato" Aggiungi il seguente codice.

  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) nel file Onet.xml nel nodo "WebFeature" aggiungi il seguente 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>
.

    .
  • Nell'elemento ID funzione aggiungi l'ID della funzione Vuoto
  • Nella chiave della proprietà= elemento "SitescopedGuid" nel valore aggiungere l'ID della funzione di raccolta del sito che si desidera attivare.

    È così. Distribuire la tua soluzione e dovrebbe funzionare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top