Domanda

Ho creato un modello di sito da un sito di base che è stato esso stesso creato dal modello di base sito del team. Ora vorrei usare quel modello di sito al di fuori del web in cui è stato creato in modo che si comporta come un modello globale.

Per esempio, vorrei che il mio nuovo modello ad apparire nella lista dei modelli mostrato da get-spwebtemplate o copiare un file 'stp' ad un sistema di test e creare un nuovo sito ci utilizzando il modello in dotazione.

È possibile? Se non è possibile, qual è il modo corretto su SharePoint?

(utilizzando SharePoint 2010 Server RC)

grazie!

È stato utile?

Soluzione

Credo di sapere come farlo ora. Le sarei grato per chiunque di farsi coinvolgere in modo "giusto" per fare questo, perché questo processo sembra un po 'strano.

Utilizzando l'interfaccia utente, è possibile creare una rete utilizzando un modello stock all'interno di una raccolta siti e personalizzarlo con l'aggiunta di pezzi di esso, e la rimozione di cose che non si desidera. Poi, con il web selezionato che si desidera utilizzare come modello, come amministratore, selezionate 'Impostazioni sito' e poi 'Salva sito come modello' in cui è possibile assegnare un nome di file, nome descrittivo, e un testo descrittivo. In questo modo si pone il modello risultante nella banca dati, evidentemente, e crea un punto di riferimento che vive nella lista 'Solutions' anche nella pagina Impostazioni sito. (Se si visita la lista dei 'Solutions' è possibile fare clic sul modello e salvarlo come un file locale che può essere caricato in un altro sito, che è utile).

E 'abbastanza noto che è possibile creare un sito in codice con l'aggiunta di un nuovo Web alla raccolta web di un sito, che assomiglia a questo:

SPWeb newWeb = subSite.Webs.Add(
                "pathtoweb",
                "Title of New Web",
                "Web Description",
                1033,
                template, 
                false, false);

dove 'template' qui è un'istanza della SPWebTemplate che si desidera utilizzare. Se si tratta di uno dei modelli azionari, di solito si può fare riferimento a loro per nome per esempio, "STS # 0" e così via, invece di riferimento modello mostrato qui. La domanda è: come ottenere il nome del modello personalizzato da utilizzare nella chiamata API.

Per trovare il 'nome' del modello che è stato creato, ho usato PowerShell come questo

$x = get-spsite http://machine/managedpath/sitecollectionname
$x.GetWebTemplates(1033) 

, che ha scaricato tutti i modelli su questo sito secondario, e comprendeva i miei modelli modificati alla fine con i nomi abbastanza difficile che ho copiato e incollato al mio programma in C #.

Non ho esplorare tutte le permutazioni qui, per esempio, probabilmente si può semplicemente usare il nome basato su GUID nella chiamata .Add, ma per essere esplicito, questa è la sequenza che ha lavorato per me. Mi piacerebbe sentire che questo è madness-- fatemelo sapere qualcosa di più elegante:

        // or any of the other hundred ways to do this...
        SPSite s = new SPSite("your url here");
        SPWeb subSite = s.RootWeb;

        // 1033 is the locale id for English
        SPWebTemplateCollection wtc = s.GetWebTemplates(1033);
        // use the name for the index
        SPWebTemplate template = 
            wtc["{8925048C-DF71-guidguidguidguid}#MyTemplate"];

        SPWeb newWeb = subSite.Webs.Add(
                "pathtoweb",
                "Title of New Web",
                "Web Description",
                1033,
                template, 
                false, false);

SharePoint!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top