Sitecoreには、編集リボンを使用してページにコンテンツを追加しているユーザーがいます。ただし、EditModeをそのユーザーの役割から完全に排除したいページがいくつかあります。これはブランチテンプレートに基づいているため、各ページの権限を取り消すことはできません。Sitecore.Context.PageModeをNormalに設定する方法が必要です。
PageModeを設定するためのAPIはありますか?
Sitecoreには、編集リボンを使用してページにコンテンツを追加しているユーザーがいます。ただし、EditModeをそのユーザーの役割から完全に排除したいページがいくつかあります。これはブランチテンプレートに基づいているため、各ページの権限を取り消すことはできません。Sitecore.Context.PageModeをNormalに設定する方法が必要です。
PageModeを設定するためのAPIはありますか?
ユーザーをリダイレクトしたり、これを特定のページにハードコーディングしたりするのではなく、ルールを作成してルールエンジンを利用することをお勧めします。これにより、コードを再利用し、コンテンツエディタを介してオン/オフをはるかに簡単に切り替えることができます。
役割を選択するための条件はすでにあります。
/sitecore/system/Settings/Rules/Common/Conditions/Security/User Role
したがって、通常モードに切り替えるためのアクションを作成する必要があります。アクションでは、次のコードを呼び出すことができます。
Context.Site.SetDisplayMode(Sitecore.Sites.DisplayMode.Normal, Sitecore.Sites.DisplayModeDuration.ResetAfterRequest);
wilsjdが提案したようにチェックでそれを包みます。
ルールエンジンに慣れていない場合のルールエンジンに関する情報:
ルールエンジンを介したデカップリング
SitecoreASP.NETCMSルールエンジンのすべて
your redirect method should work, but it also turns off the PageEditor mode for other pages the editor visits after the redirect.
You could also check if the Page is in EditMode and the user is part of a certain Role and for that (sub)layout show standard .NET controls instead of the Sitecore sc-controls.
Like <asp:Literal /> instead of <sc:Text />
C# API は見つかりませんでしたが、次のような URL リダイレクトを使用できることがわかりました。
if (!Sitecore.Context.PageMode.IsNormal && !IsAdministrator())
{
String id = Sitecore.Context.Item.ID.ToString();
Response.Redirect("/?sc_mode=normal&sc_itemid=" + id + "&sc_lang=en");
}
これにより、PageMode が他の状態にある場合、Normal に設定されます。