Frage

Ich habe eine Website-Vorlage von einer Grund Seite, die sich von dem Grunde Team Site-Vorlage erstellt wurde. Nun würde Ich mag diese Website-Vorlage außerhalb der Bahn verwenden, in dem es erstellt wurde, so dass es wie eine globale Vorlage handelt.

Zum Beispiel würde ich meine neue Vorlage wie in der Vorlagenliste von get-SPWebTemplate gezeigt erscheinen oder eine ‚stp‘ Datei in ein Testsystem kopieren und eine neue Website erstellen, da die mitgelieferte Vorlage.

Ist das möglich? Falls dies nicht möglich, was ist der Sharepoint-richtiger Weg?

(Verwenden von Sharepoint Server 2010 RC)

Danke!

War es hilfreich?

Lösung

Ich glaube, ich weiß, wie dies jetzt zu tun. Ich wäre dankbar für jeden auf dem „richtigen“ Weg zu wiegen, dies zu tun, weil dieser Prozess ein wenig seltsam scheint.

die Benutzeroberfläche verwenden, können Sie eine Web mit einer Lager-Vorlage innerhalb einer Websitesammlung erstellen und anpassen, indem Stücke ihn hinzufügen und Entfernen von Dingen, die Sie nicht wollen. Dann mit der Bahn gewählt, dass Sie als Vorlage verwenden möchten, als Administrator, wählen Sie ‚Site-Einstellungen‘ und dann ‚Website als Vorlage speichern‘, wo Sie dann einen Dateinamen, Anzeigenamen zuweisen können, und beschreibenden Text. Dadurch stellt die resultierende Vorlage in die Datenbank offenbar und schafft eine Referenz, die auch auf der Seite Websiteeinstellungen in der "Solutions Liste lebt. (Wenn Sie die ‚Lösungen‘ Liste besuchen, können Sie auf die Vorlage klicken und es als eine lokale Datei speichern, die dann auf eine andere Website hochgeladen werden können, was sehr hilfreich ist).

Es ist einigermaßen gut bekannt, dass Sie durch das Hinzufügen einer neuen Bahn auf eine Website Web-Sammlung eine Website in Code erstellen können, die wie folgt aussieht:

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

Dabei steht ‚Vorlage‘ hier ist eine Instanz der SPWebTemplate Sie verwenden möchten. Wenn es eines der Lager-Vorlagen ist, können Sie in der Regel auf sie mit Namen siehe zum Beispiel „STS # 0“ und so weiter statt der Vorlage nachfolgend als Referenz aufgeführt. Die Frage ist: Wie der Name der angepassten Vorlage, um es in dem API-Aufruf zu verwenden.

, um den ‚name‘ Um der Vorlage, die erstellt wurde, habe ich Powershell wie folgt

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

, die alle Vorlagen auf dieser Subsite abgeladen und umfassten meine geänderte Vorlagen am Ende mit nicht sehr bequem Namen, die ich in meinem C # Programm kopiert und eingefügt.

Ich habe erforschen nicht all Permutationen hier, zum Beispiel, können Sie wahrscheinlich nur den GUID-basierten Namen in dem Anruf .Add verwenden, aber seine persönliches Vertrauen, das ist die Sequenz, die für mich gearbeitet. Ich würde gerne hören, dass diese madness-- ist lass es mich wissen, etwas elegantere:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top