I have modified the code a bit to suite my needs
SPSite osite = properties.Feature.Parent as SPSite;
using (SPWeb oWeb = osite.OpenWeb(osite.RootWeb.ID))
{
//SPLimitedWebPartManager webpartsManager = oWeb.GetLimitedWebPartManager(oWeb.RootFolder.WelcomePage, PersonalizationScope.Shared);
SPFile file = oWeb.GetFile(oWeb.RootFolder.WelcomePage);
Guid cwpID = AddWebPartToRichContent(file);
Guid xlvID = AddListWebPartToRichContent(file, "Announcements");
}
private Guid AddWebPartToRichContent(SPFile file)
{
// NOTE: we assume that the SPFile was checked out
// get the limited wp manager for that SPFile
SPLimitedWebPartManager mngr = file.GetLimitedWebPartManager(PersonalizationScope.Shared);
// create a sample content editor wp
ContentEditorWebPart cwp = new ContentEditorWebPart();
cwp.Title = "My editor";
// add the web part to the special wpz zone
mngr.AddWebPart(cwp, "wpz", 0);
// store the web part's internal ID
Guid cwpID = mngr.GetStorageKey(cwp);
// get the list item for that SPFile
SPListItem item = file.Item;
// update the PublishingPageContent field value
item["WikiField"] += this.GetEmbeddedWPString(cwpID);
// update the item
item.SystemUpdate(false);
// the SPFile instance can be checked in, published, approved afterwards
return cwpID;
}
private Guid AddListWebPartToRichContent(SPFile file, string listTitle)
{
// NOTE: we assume that the SPFile was checked out
// get the limited wp manager for that SPFile
SPLimitedWebPartManager mngr = file.GetLimitedWebPartManager(PersonalizationScope.Shared);
// create a sample XLV
XsltListViewWebPart xlv = new XsltListViewWebPart();
// get a target list
SPList list = file.ParentFolder.ParentWeb.Lists[listTitle];
// set the ListName property with the capitalized list ID w/o the curly braces
xlv.ListName = list.ID.ToString("B").ToUpper();
// use the schema of the default view
xlv.ViewGuid = list.DefaultView.ID.ToString("B").ToUpper();
// add the web part to the special wpz zone
mngr.AddWebPart(xlv, "wpz", 0);
// store the web part's internal ID
Guid xlvID = mngr.GetStorageKey(xlv);
// get the list item for that SPFile
SPListItem item = file.Item;
// update the PublishingPageContent field value
item["WikiField"] += this.GetEmbeddedWPString(xlvID);
// update the item
item.SystemUpdate(false);
// the SPFile instance can be checked in, published, approved afterwards
return xlvID;
}
private string GetEmbeddedWPString(Guid wpID)
{
const string form = @"
";
// set the web part's ID as part of the ID-s of tho div elements
return string.Format(form, wpID);
}
I hope this would help someone out there.
Update: Found another helpful post
http://www.habaneros.com/mobile/blog/10-03-30/Programmatically_Change_Content_on_a_Wiki_Page_in_SharePoint_2010.aspx