Como dice la pregunta: ¿hay alguna forma de determinar qué páginas incluyen mi parte web?Sharepoint: ¿cómo puedo encontrar todas las páginas que alojan un elemento web en particular?
Respuesta
Si buscas código, tengo algo para ti. Si desea encontrar todos los elementos web Consulta de contenido, entonces sería llamar a mi código como este:
FindWebPart("http://server.com/", "Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart");
Aquí está el código:
public static void FindWebPart(string siteCollectionUrl, string webPartName)
{
using (SPSite siteCollection = new SPSite(siteCollectionUrl))
{
using (SPWeb rootSite = siteCollection.OpenWeb())
{
FindWebPartHelper(rootSite, webPartName);
}
}
}
public static void FindWebPartHelper(SPWeb site, string webPartName)
{
// Search for web part in Pages document library
SPList pagesList = null;
try
{
pagesList = site.Lists["Pages"];
}
catch (ArgumentException)
{
// List not found
}
if (null != pagesList)
{
SPListItemCollection pages = pagesList.Items;
foreach (SPListItem page in pages)
{
SPFile file = page.File;
using (SPLimitedWebPartManager mgr = file.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
try
{
SPLimitedWebPartCollection webparts = mgr.WebParts;
foreach (System.Web.UI.WebControls.WebParts.WebPart wp in webparts)
{
// Here perform the webpart check
// For instance you could identify the web part by
// its class name
if (webPartName == wp.GetType().ToString())
{
// Found a match! Now do something...
Console.WriteLine("Found web part!");
}
}
}
finally
{
// Needs to be disposed
mgr.Web.Dispose();
}
}
}
}
// Check sub sites
SPWebCollection subSites = site.Webs;
foreach (SPWeb subSite in subSites)
{
try
{
FindWebPartHelper(subSite, webPartName);
}
finally
{
// Don't forget to dispose!
subSite.Dispose();
}
}
}
Por supuesto se puede hacer pequeños cambios en el código. Actualmente hace una comparación de cadenas, pero es fácil hacerlo de una manera más tipada. ¡Que te diviertas!
A modo de alternativa, si desea probar páginas de elementos web que incluye la página por defecto en los sitios de colaboración, puede utilizar el siguiente fragmento de código que utiliza la propiedad de archivos del objeto SPWeb:
private static void FindWebPart(string siteUrl, string webPartName)
{
using (var site = new SPSite(siteUrl))
{
foreach (SPWeb web in site.AllWebs)
{
foreach (var file in web.Files.Cast<SPFile>().Where(file => file.Name.EndsWith("aspx")))
{
FindWebPartOnPage(webPartName, file);
}
var pagesTemplateType = (SPListTemplateType)Enum.Parse(typeof(SPListTemplateType), "850");
foreach (var documentLibrary in web.Lists.Cast<SPList>().Where(list => list.BaseTemplate == pagesTemplateType || (list.BaseTemplate == SPListTemplateType.DocumentLibrary && list.Title.Contains("Pages"))))
{
foreach (var file in documentLibrary.Items.Cast<SPListItem>().Where(item => item.File.Name.EndsWith("aspx")).Select(item => item.File))
{
FindWebPartOnPage(webPartName, file);
}
}
web.Dispose();
}
}
}
private static void FindWebPartOnPage(string webPartName, SPFile file)
{
using (var webPartManager = file.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
if (webPartManager.WebParts.Cast<WebPart>().Any(webPart => webPart.GetType().Name == webPartName))
{
Console.WriteLine(file.ServerRelativeUrl);
}
webPartManager.Web.Dispose();
}
}
Nota: la biblioteca de páginas creada por la función de publicación no tiene un valor BaseTemplate de SPListTemplateType.DocumentLibrary; en cambio, está representado por un valor "oculta" de 850.
Esto se llama una manera similar a la respuesta de LeonZandman, sin embargo, sólo el nombre de clase se utiliza para suministrar un partido:
FindWebPart("http://yoursite.com/", "MyWebPart");
- 1. Encontrar todas las clases con un atributo en particular
- 2. ¿Cómo puedo verificar que las páginas web estén comprimidas?
- 3. ¿Cómo puedo encontrar todas las etiquetas para una subcarpeta de proyecto TFS en particular?
- 4. Cómo hacer el mismo diseño para todas las páginas web
- 5. ¿Cómo puedo configurar las partes web configurables en Sharepoint?
- 6. Sharepoint Web Service GetListItems no devuelve todas las filas
- 7. Gmail IMAP: ¿Hay alguna forma de encontrar todas las etiquetas (carpetas) en las que se encuentra un mensaje en particular?
- 8. Gráficos en páginas web
- 9. Cómo hacer que PagerAdapter cargue todas las páginas
- 10. Favicon para todas las páginas de mi sitio web
- 11. Agregar un javascript a todas las páginas en OpenCart
- 12. ¿Cómo puedo encontrar todas las unidades en mi aplicación Delphi?
- 13. ¿Cómo enumerar todas las ventanas que pertenecen a un proceso particular usando .NET?
- 14. páginas Web que simplemente páginas demasiada materia
- 15. Eliminado accidentalmente un elemento web, ¿cómo puedo recuperarlo?
- 16. cómo encontrar un nodo particular en Neo4j
- 17. ¿Cómo funcionan las aplicaciones que generan imágenes de páginas web?
- 18. ¿Cómo encontrar todas las palabras que aparecen entre paréntesis?
- 19. ¿Cómo encontrar todas las clases que implementan IDisposable?
- 20. rompiendo un entorno en todas las páginas: la forma inteligente
- 21. ¿Cómo puedo listar TODAS las concesiones que recibió un usuario?
- 22. Cómo 301 redirigir todas las páginas a las mismas páginas en el nuevo dominio
- 23. .htaccess hace que todas las páginas se descarguen
- 24. ¿Cómo encontrar todas las clases que implementan una interfaz determinada?
- 25. Error de SharePoint: "No se puede importar el elemento web"
- 26. ¿Cómo encontrar todas las rutas vertex-disjoint en un gráfico?
- 27. Adjuntar EventReceiver a todas las listas de un sitio sharepoint
- 28. ¿Cómo ejecutar todas las pruebas en un paquete particular con Maven?
- 29. Mantenga un registro de todas las clases que implementan una interfaz en particular?
- 30. Firmas electrónicas en las páginas web
campeón, gracias por la ayuda – nailitdown
Me alegro de ser de ayuda :-) – LeonZandman
Por cierto, ¿no debería marcar mi respuesta como la respuesta, haciendo clic en la marca de verificación? – LeonZandman