Tuesday, 7 February 2012

Create a Page/Item in Ghosted Mode Programmatically


Have you ever encountered pages/items added to SharePoint library/list via feature with custom code is not ghostable? This is because when file or page is created under SP Object Model the SharePoint will save them as instance in content database. But when you provisioning those files via feature module then they will become ghosted. When you need a custom to provision file? Such as page is already existed, that is default page of site or etc.

Some of you may not know what ghosted mean in plain English,

"A ghosted page is a page in SharePoint website which is not stored in the database instead it reference to a file which exists in the server’s file system. These reference files are common for all the website/site collection within that SharePoint server, i.e., if you modify a reference file then that change will reflect in all the websites/site collections within that SharePoint server automatically. So we can say these reference files are used as template."


As you can see the benefits of having file which is ghosted when you are working in large farm or huge repository that referenced to same file.

The SP Object Model does not support adding file to SharePoint under ghosted mode, therefore after reflected Microsoft.SharePoint assembly and discover that is a way to perform same task as feature module does. "EnableModuleFromXml" in Microsoft.SharePoint.Library.SPRequest.

I had attached a helper class which hope it can help you along with your development.

Here the example when you try to use provision a file.


GhostFile("FullFeaturePathOnServer", [targetWebsite], [targetFolderRelUrl | "Or leave empty"], differentTargetFileNameOrNull, createListItem, mode)

Set createListItem = false when try provision item in list.