Sitecore IsPageEditor 和 IsExperienceEditor
Sitecore IsPageEditor and IsExperienceEditor
我们目前正在为 Sitecore 编写一个模块,运行 遇到了问题。
我们有一个管道,我们在其中执行以下检查:
if (Sitecore.Context.PageMode.IsExperienceEditor)
{
return;
}
问题是我们的一位客户是 运行 和旧版本的 Sitecore(8.0 更新 5),其中 属性 IsExperienceEditor 尚不存在。请参阅 Sitecore release notes 以了解引入它的下一次更新。
为了快速修复错误,我们使用了旧的已弃用 属性,即:
if (Sitecore.Context.PageMode.IsPageEditor)
{
return;
}
现在的问题是,有没有什么方法可以测试 Sitecore 版本,以便我们可以在模块中实现向后兼容性?
您可以在您提到的两个属性的后台使用在 Sitecore 中执行的代码:
if (Sitecore.Context.Site.DisplayMode == Sitecore.Sites.DisplayMode.Edit)
{
return;
}
我知道使用 Sitecore.Context.PageMode.IsExperienceEditor
(或 Sitecore.Context.PageMode.IsPageEditor
)更优雅,但在需要同时支持新旧 Sitecore 版本的情况下,这听起来是个不错的选择。
IsPageEditor
中弃用的 属性 仍然存在,专门用于向后兼容。 IsExperienceEditor
只是重命名后的 属性,其功能与 IsPageEditor
相同。
但是您可以像这样检查 属性 是否存在:
public static bool HasProperty(this object obj, string propertyName)
{
return obj.GetType().GetProperty(propertyName) != null;
}
另一个选择是制作两个不同版本的模块,如果不同版本的 Sitecore 的实现明显不同的话。
我们目前正在为 Sitecore 编写一个模块,运行 遇到了问题。
我们有一个管道,我们在其中执行以下检查:
if (Sitecore.Context.PageMode.IsExperienceEditor)
{
return;
}
问题是我们的一位客户是 运行 和旧版本的 Sitecore(8.0 更新 5),其中 属性 IsExperienceEditor 尚不存在。请参阅 Sitecore release notes 以了解引入它的下一次更新。
为了快速修复错误,我们使用了旧的已弃用 属性,即:
if (Sitecore.Context.PageMode.IsPageEditor)
{
return;
}
现在的问题是,有没有什么方法可以测试 Sitecore 版本,以便我们可以在模块中实现向后兼容性?
您可以在您提到的两个属性的后台使用在 Sitecore 中执行的代码:
if (Sitecore.Context.Site.DisplayMode == Sitecore.Sites.DisplayMode.Edit)
{
return;
}
我知道使用 Sitecore.Context.PageMode.IsExperienceEditor
(或 Sitecore.Context.PageMode.IsPageEditor
)更优雅,但在需要同时支持新旧 Sitecore 版本的情况下,这听起来是个不错的选择。
IsPageEditor
中弃用的 属性 仍然存在,专门用于向后兼容。 IsExperienceEditor
只是重命名后的 属性,其功能与 IsPageEditor
相同。
但是您可以像这样检查 属性 是否存在:
public static bool HasProperty(this object obj, string propertyName)
{
return obj.GetType().GetProperty(propertyName) != null;
}
另一个选择是制作两个不同版本的模块,如果不同版本的 Sitecore 的实现明显不同的话。