2017-06-29 15 views
3

現在、Sitecore用のモジュールを作成中で、問題が発生しました。Sitecore IsPageEditorとIsExperienceEditor

私たちは、次のチェックを行うするパイプラインを持っている:

if (Sitecore.Context.PageMode.IsExperienceEditor) 
{ 
    return; 
} 

問題は、私たちのクライアントのいずれかが実行されていることで、サイトコアの古いバージョンプロパティIsExperienceEditorが存在しない(8.0アップデート5)まだ。導入された次回の更新については、Sitecore release notesを参照してください。すぐに我々はこれです古い非推奨のプロパティを使用し、エラーを修正するには

if (Sitecore.Context.PageMode.IsPageEditor) 
{ 
    return; 
} 

今の質問は、ある我々は後方互換性を持つことができますので、私たちはサイトコアのバージョンをテストすることが可能な任意の方法がありますモジュールで?私はあなたが必要なときSitecore.Context.PageMode.IsExperienceEditor(またはSitecore.Context.PageMode.IsPageEditor)を使用すると、よりエレガントな、しかし状況にあることを知っている

if (Sitecore.Context.Site.DisplayMode == Sitecore.Sites.DisplayMode.Edit) 
{ 
    return; 
} 

答えて

3

あなたは、あなたが言及した両方の特性の背景にサイトコアで実行されるコードを使用することができます古いものと新しいものの両方のSitecoreをサポートするには、良い選択肢のように思えます。

+0

ありがとうございましたこれは動作するようです。 –

0

廃止されたプロパティIsPageEditorは、特に下位互換性のために存在します。 IsExperienceEditorは、IsPageEditorと同じことを行う名前の変更されたプロパティです。あなたはこのようなプロパティが存在するかどうかを確認することができますしかし

:実装はサイトコアの異なるバージョンのために大幅に異なるものとなる場合

public static bool HasProperty(this object obj, string propertyName) 
{ 
    return obj.GetType().GetProperty(propertyName) != null; 
} 

別のオプションは、モジュールの2つの異なるバージョンを作ることです。

関連する問題