2009-06-11 20 views
7

¿Existe una forma simple de agregar una página de parte web a un sitio Sharepoint mediante programación, utilizando el modelo de objetos o los servicios web? Parece sencillo crear listas y agregar elementos web de esta manera, pero no puedo encontrar un ejemplo de cómo crear una página de contenido.Crear una página de partición web mediante programación en Sharepoint

Editar: Para una instalación simple de WSS (no MOSS).

Respuesta

13

voy a tomar la ruta que esto no es un sitio de colaboración/edición ya que esto no se menciona y wss está en la lista de etiquetas. Bastante torpe en comparación con el uso de un sitio de publicación ...

Primero elija la plantilla de página web part desea utilizar a partir de:

C: \ Archivos de programa \ Common Files \ Microsoft Shared \ servidor web extensiones \ 12 \ TEMPLATE \ 1033 \ STS \ DOCTEMP \ SMARTPGS

Entonces creó una corriente a la plantilla y utilizar SPFileCollection.Add() para añadirlo a la biblioteca de documentos. Por ejemplo:

string newFilename = "newpage.aspx"; 
string templateFilename = "spstd1.aspx"; 
string hive = SPUtility.GetGenericSetupPath("TEMPLATE\\1033\\STS\\DOCTEMP\\SMARTPGS\\"); 
FileStream stream = new FileStream(hive + templateFilename, FileMode.Open); 
using (SPSite site = new SPSite("http://sharepoint")) 
using (SPWeb web = site.OpenWeb()) 
{ 
    SPFolder libraryFolder = web.GetFolder("Document Library"); 
    SPFileCollection files = libraryFolder.Files; 
    SPFile newFile = files.Add(newFilename, stream); 
} 

Nota: Esta solución asume que tiene instalada la versión de SharePoint de los EE. UU. Que usa el código de lenguaje 1033. Solo cambia la ruta si es diferente.

+0

Funciona: D !! Buen post Alex :-) !! – Muhammedh

+0

@Alex ¿Es posible establecer la página maestra de newpage.aspx para que le guste SomeMasterPageName.master? ¿Cómo lo incluiría en el código? –

0

Una solución alternativa a la respuesta aceptada de @AlexAngas es utilizar el NewWebPage method del SharePoint Foundation RPC Protocol, como se sugiere here.

private static void CreateWebPartPage(this SPWeb web, SPList list, string pageName, int layoutTemplate) 
{ 
    const string newWPPage = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + 
            "<Batch>" + 
            "<Method ID=\"0,NewWebPage\">" + 
            "<SetList Scope=\"Request\">{0}</SetList>" + 
            "<SetVar Name=\"Cmd\">NewWebPage</SetVar>" + 
            "<SetVar Name=\"ID\">New</SetVar>" + 
            "<SetVar Name=\"Type\">WebPartPage</SetVar>" + 
            "<SetVar Name=\"WebPartPageTemplate\">{2}</SetVar>" + 
            "<SetVar Name=\"Overwrite\">true</SetVar>" + 
            "<SetVar Name=\"Title\">{1}</SetVar>" + 
            "</Method>" + 
            "</Batch>"; 
    var newWPPageBatchXml = string.Format(newWPPage, list.ID, pageName, layoutTemplate); 

    var result = web.ProcessBatchData(newWPPageBatchXml); 
} 

Uso del método de extensión por encima de:

web.CreateWebPartPage(yourList, "NewPage", 2); 
Cuestiones relacionadas