I have a rendering that is used on pages all over my site, and I had to add a new field to the Rendering Parameters it uses. I now need to update this field on a huge number of renderings, but only on renderings that exist within a particular placeholder, so I can't just apply it globally in standard values.
I've started writing a script to update the rendering parameters, and I think I've got the code to retrieve and modify the rendering parameters, but I'm not sure how to apply it back to the rendering and save it.
var testPage = db.GetItem("/sitecore/content/Home/Magazine/Issues/2009/August");
var renderings = testPage.Visualization.GetRenderings(Sitecore.Context.Device, true);
foreach (var rendering in renderings)
{
var placeholderId = rendering.Placeholder;
// check renderingitem id
if (rendering.RenderingItem.ID == new Sitecore.Data.ID("{93F07F46-F356-419A-B937-A5EB2A9D63DD}"))
{
if (placeholderId == "/content-body/secondary-column-left")
{
var parameterString = rendering.RenderingItem.Parameters;
var parameters = HttpUtility.ParseQueryString(parameterString);
parameters["Display Subtitle"] = "1";
parameterString = parameters.ToString();
// HOW DO I PUT THIS BACK ON THE RENDERING NOW?
}
}
}