Pergunta

Criei um modelo de site a partir de um site básico que foi criado a partir do modelo básico do site da equipe. Agora eu gostaria de usar esse modelo de site fora da web, onde foi criado, para que ele atue como um modelo global.

Por exemplo, eu gostaria que meu novo modelo aparecesse na lista de modelos mostrados pelo Get-Spwebemplate ou copie um arquivo 'STP' para um sistema de teste e crie um novo site lá usando o modelo em pacote.

Isso é possível? Se não for possível, qual é a maneira do SharePoint-Correct?

(Usando o SharePoint 2010 Server RC)

obrigado!

Foi útil?

Solução

Eu acredito que sei como fazer isso agora. Eu ficaria grato a qualquer um que pese na maneira "certa" de fazer isso, porque esse processo parece um pouco estranho.

Usando a interface do usuário, você pode criar uma web usando um modelo de estoque em uma coleção de sites e personalizá -la adicionando peças a ele e removendo coisas que você não deseja. Em seguida, com a Web selecionada que você deseja usar como modelo, como administrador, escolha 'Configurações do site' e, em seguida, 'salve o site como modelo', onde você pode atribuir um nome de arquivo, nome amigável e texto descritivo. Fazer isso coloca o modelo resultante no banco de dados evidentemente e cria uma referência que vive na lista de 'soluções' também na página Configurações do site. (Se você visitar a lista de 'soluções', poderá clicar no modelo e salvá -lo como um arquivo local que pode ser enviado para outro site, o que é útil).

É razoavelmente conhecido que você pode criar um site no código adicionando uma nova web à coleção da web de um site, que se parece com o seguinte:

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

onde 'modelo' aqui está uma instância do spwebemplate que você deseja usar. Se for um dos modelos de estoque, geralmente você pode consultar a eles pelo nome, por exemplo, "Sts#0" e assim por diante, em vez da referência do modelo mostrada aqui. A pergunta é: como obter o nome do modelo personalizado para usá -lo na chamada da API.

Para encontrar o 'nome' do modelo que foi criado, usei PowerShell assim

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

que despejou todos os modelos neste subsite e incluiu meus modelos modificados no final com nomes não muito convenientes que eu copiei e colei no meu programa C#.

Eu não explorei todas as permutações aqui, por exemplo, você provavelmente pode usar o nome baseado em GUID na chamada .Add, mas, para ser explícito, essa é a sequência que funcionou para mim. Eu adoraria saber que isso é loucura- por favor, deixe-me saber algo mais 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!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top