Agregar las paginas al mapa de la Intranet

25/07/2007 - 12:36 por Iñigo | Informe spam
Hola, he creado un mapa de la intranet en sharepoint 2007 y quisiera saber si
alguien sabe como agregar las paginas a ese mapa y como añadir una propiedad
que puedas desabiitar o habilitar ver las paginas en el mapa de sitio.
Muchas gracias de antemano
Un saludo
 

Leer las respuestas

#1 Elecktrus
26/07/2007 - 08:50 | Informe spam
Hola, Iñigo.
Te contesto algunas ideas, para que luego tu las ampies.
Desde mi punto de vista hay 3 clases de paginas
- las default (default.aspx). De este tipo existe 1 (y solo 1) en cada sitio
'estandar' (por estandar me refiero a los tipos de sitio que existian ya en
la version 2003: sitios de colaboracion, sitios de reuniones, etc).
Estas paginas estan 'hard code' y no se puede hacer nada sobre ellas

- paginas del usuario, las que se crean cuando creas una página basica o
pagina de webpart. Estas se almacenan en una biblioteca que elija el usuario.
Estas paginas no forman parte de la navegacion estandar, y solo se puede
acceder a ellas si un usuario crea 'a mano' enlaces o menus para acceder a
ellas

- paginas de publicacion, las que aparecen con una url del tipo
/sitio/pages/mipagina.aspx o /sitio/paginas/mipagina.aspx (en sps español).
Son por ejemplo las que se usan en el sitio de busqueda.Estas paginas tienen
una particularidad, solo pueden existir si esta activada la feature 'Office
SharePoint Server Publishing' (asi se llama en un sps ingles)

Bueno, despues de este rollo, la parte practica. Para saber las paginas, yo
haria este truco ( no es exacto en el 100% de los casos pero es muy
aproximado):
- para cada sitio web que vayas recorriendo, miraria si tiene activada la
feature de publicacion. Ej:
SPSite rfcSite = new SPSite("http://miservidor/misitio"); //abrimos el site
SPWeb sitio = rfcSite.OpenWeb(); //abrimos el sitio web
Guid publishguid= new
Guid("94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb");
if (sitio.Features[publishguid] != null) //hay publicacion
{
SPList lista=sitio.Lists["Pages"]; //abrimos la biblioteca
de paginas
foreach (SPItem itempagina in lista) //recorremos cada
pagina
{
//hacemos lo que sea con la pagina
Console.WriteLine(itempagina.Fields["Title"]);
}
}
OJO: El guid y el nombre de la biblioteca son los de un SPS ingles, en
español el guid puede ser el mismo (miralo en el feature.xml), pero la
biblioteca cambia a "Páginas"

- si el sitio no tiene activa esa feature, entonces, seguro que tiene la
pagina default.aspx. En este caso, ademas, podrias mirar en las diferentes
bibliotecas que existen en el sitio si hay archivos con extension .aspx como
parte de su nombre. Pero no tienes forma se saber si son paginas de
navegacion o estan alli por otro motivo (imagina una biblioteca de desarrollo
de paginas aspx)

Resumiendo:
- para cada sitio, mirar si tiene activa la feature
- si la tiene, mostrar el contenido de la biblioteca "Pages" o "Páginas" (en
inlges o español). Si no sabes cual, pregunta por las 2, al menos una de
ellas existira
- si no la tiene, mostrar la pagina default.aspx (y opcionalmente, mirar en
las bibliotecas por si existen ficheros con extension .aspx)

Espero que esto te pueda ayuda. Por favor, si consigues que te funciona,
publica el codigo entero del webpart o enviaselo a alguien que lo pueda
publicar, que nos ayudara a todos.

Preguntas similares