Question

J'ai créé un modèle de site à partir d'un site de base qui a été lui-même créé à partir de la base de modèle de site d'équipe.Maintenant, je voudrais utiliser ce modèle de site à l'extérieur de la toile où il a été créé de sorte qu'il agit comme un modèle global.

Par exemple, je voudrais que mon nouveau modèle apparaisse dans la liste des modèles indiqués par get-spwebtemplate ou copier un 'stp' fichier à un système de test et de créer un nouveau site à l'aide du logiciel de modèle.

Est-ce possible?Si pas possible, quel est le sharepoint de manière correcte?

(À l'aide de SharePoint Server 2010 RC)

merci!

Était-ce utile?

La solution

Je crois que je sais comment faire maintenant.Je serais reconnaissant pour toute personne pour peser sur la "bonne" façon de faire cela, parce que ce processus semble un peu bizarre.

À l'aide de l'INTERFACE utilisateur, vous pouvez créer un site web en utilisant un modèle de stock au sein d'un site de collecte et de le personnaliser en ajoutant des morceaux d'elle, et la suppression de choses que vous ne voulez pas.Puis, avec le web sélectionné que vous souhaitez utiliser en tant que modèle, en tant qu'admin, choisissez "Paramètres du Site "puis" Enregistrer le Site en tant que Modèle " d'où vous pouvez attribuer un nom de fichier, nom convivial, et un texte descriptif.Faire cela place l'résultant de modèle dans la base de données à l'évidence et crée une référence qui vit dans les "Solutions" liste sur la page Paramètres du Site.(Si vous visitez les "Solutions" list vous pouvez cliquer sur le modèle et l'enregistrer comme un fichier local qui peut ensuite être transféré vers un autre site, ce qui est utile).

Il est raisonnablement bien connu que vous pouvez créer un site dans le code par l'ajout d'un nouveau site web à un site web de la collection, qui ressemble à ceci:

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

où "modèle" ici est une instance de la SPWebTemplate vous souhaitez utiliser.Si c'est celui du stock de modèles, vous pouvez généralement se référer à eux par leur nom par exemple, "STS#0" et ainsi de suite au lieu de la référence du modèle présenté ici.La question est:comment obtenir le nom du modèle adapté à l'utilisation dans l'appel d'API.

Pour trouver le nom du modèle qui a été créé, j'ai utilisé PowerShell comme ceci

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

ce qui sous-évaluées tous les modèles sur ce sous-site, et de mes modifié modèles à la fin avec pas très commode noms dont j'ai copié et collé dans mon programme C#.

Je n'ai pas explorer toutes les permutations ici, par exemple, vous pouvez probablement utiliser le GUID de nom dans le .Ajouter un appel, mais pour être explicite, c'est la séquence qui a fonctionné pour moi.Je serais ravi d'entendre que c'est de la folie-- s'il vous plaît laissez-moi savoir quelque chose de plus élégant:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top