R – Delete Publishing Pages from SharePoint Publishing Web
apimosssharepointsharepoint-2007
How can I delete pages from a publishing web using the SharePoint API?
Thanks, MagicAndi.
Best Answer
The code below works for me. It was taken from this forum post. Note, it is not possible to delete a publishing page if it is set as the default landing (welcome) page.
try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(p_sSitePath))
{
using (SPWeb web = site.OpenWeb())
{
PublishingWeb pubWeb = null;
if (PublishingWeb.IsPublishingWeb(web))
{
pubWeb = PublishingWeb.GetPublishingWeb(web);
foreach (SPListItem currentItem in pubWeb.PagesList.Items)
{
if(PublishingPage.IsPublishingPage(currentItem))
{
PublishingPage page = PublishingPage.GetPublishingPage(currentItem);
if (page.Name != pubWeb.DefaultPage.Name)
{
currentItem.File.Delete();
}
}
}
}
}
}
});
}
catch (Exception ex)
{
}
The answer is a resounding "yes." The import and export of sites within SharePoint is handled through the Content Deployment API (also known as the PRIME API). This API is responsible for providing the backing to both import/export functionality supplied through STSADM.exe; it also handles the content deployment within MOSS.
A great place to get started with the Content Deployment API is with a series of articles written by Stefan Gossner. Stefan is an escalation engineer for Microsoft, and you'd be hard pressed to find someone more knowledgeable in the practical workings of the PRIME API:
All parts of this six-part series are excellent, and I recommend reading them all. Parts three and four, though, get to some of the specifics of the import and export operations you indicated you'd like to implement.
Best Answer
The code below works for me. It was taken from this forum post. Note, it is not possible to delete a publishing page if it is set as the default landing (welcome) page.