Checking for Experience Explorer Context in Sitecore 9
Posted on: November 3, 2017 /
Categories: Sitecore, Sitecore 9
With the release of Sitecore 9, a underappreciated DLL was removed: Sitecore.ExperienceExplorer.Business.dll.
I’ve honestly never paid much attention to that DLL. The one thing I used it for, however, was determining if the current context was Experience Explorer. Synthesis made use of this:
public class SitecoreRenderingContext : IRenderingContext { ... public bool IsExperienceExplorer => Sitecore.ExperienceExplorer.Business.Managers.ModuleManager.IsExpViewModeActive; ... }
The new way of handling this is via the IsExplorerMode method in the ExplorerContext class. This isn’t a static method, however. In order to maintain the static context, the above line was changed to:
public bool IsExperienceExplorer => DependencyResolver.Current.GetService<IExplorerContext>().IsExplorerMode();
I’m typically not a the #1 fan of DependencyResolver, but I wanted to ensure backwards compatibility.
You’ll need to include the following DLLs:
- Sitecore.ExperienceExplorer — this is for the ExplorerContext class
- Sitecore.ExperienceExplorer.Core — this is for the IExplorerContext interface
The new version of Synthesis compiled against Sitecore 9 will be up on NuGet next week.