Access alternate versions of an item

Version: 10.4

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:

RequestResponse
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:

RequestResponse
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);
Note

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:

RequestResponse
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:

RequestResponse
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
            }
        }
    }

Do you have some feedback for us?

If you have suggestions for improving this article,