Access alternate versions of an item
Each item can contain multiple languages. Each language can contain multiple versions. You can use the Sitecore.Data.Version
class to specify a version when accessing an item by using the Sitecore.Data.Database.GetItem()
method. For example, to access the first version of the /Sitecore/Content/Home item in the Master database in the default en language:
Sitecore.Globalization.Language language = Sitecore.Globalization.Language.Parse("en");
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home",
language, Sitecore.Data.Version.Latest);
To access the second version of the /Sitecore/Content/Home item in the Master database in the default en language:
Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Globalization.Language language = Sitecore.Globalization.Language.Parse("en");
Sitecore.Data.Version second = Sitecore.Data.Version.Parse(2);
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home",
language,second);
If you do not specify a version, Sitecore uses the current version by default.
You can access the identifier of a version using the Sitecore.Data.Items.Version.Number
property. For example, to access the version number of the /Sitecore/Content/Home item in the Master database:
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");
int verNumber = home.Version.Number;
You can use the Sitecore.Data.Items.Item.Versions.Count
property to determine if any versions of an item exist for a language. You can use the Sitecore.Data.Items.Item.Versions.GetVersions()
method to access all versions of an item in a language. For example, to access all versions in each language of the /Sitecore/Content/Home item in the Master database:
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");
foreach (Sitecore.Globalization.Language language in home.Languages)
{
Sitecore.Data.Items.Item langItem = master.GetItem(home.ID, language);
if (langItem.Versions.Count > 0)
{
foreach (Sitecore.Data.Items.Item verItem in langItem.Versions.GetVersions())
{
// Process version item
}
}
}