В Sitecore, как изменить или установить PageMode
В Sitecore у меня есть пользователи, которые используют ленту редактирования для добавления контента на страницы. Однако есть некоторые страницы, которые я хочу полностью запретить EditMode из роли этого пользователя. Это основано на шаблоне ветки, поэтому я не могу просто отозвать привилегии для каждой страницы. Мне нужен какой-то способ установить Sitecore.Context.PageMode в Normal.
Есть ли API для настройки PageMode?
3 ответа
Хотя мне не удалось найти API C#, я обнаружил, что могу просто использовать URL Redirect, который выглядит примерно так:
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, если он находится в любом другом состоянии.
Ваш метод перенаправления должен работать, но он также отключает режим PageEditor для других страниц, которые редактор посещает после перенаправления.
Вы также можете проверить, находится ли страница в режиме редактирования, и является ли пользователь частью определенной роли, и для этого (под) макета показать стандартные элементы управления.NET вместо sc-элементов управления Sitecore.
Like <asp:Literal /> instead of <sc:Text />
Я бы посоветовал вместо того, чтобы перенаправлять пользователя / жестко программировать это на определенные страницы, вы создаете правило и используете механизм правил. Это позволит вам повторно использовать код и намного проще включать / выключать его через редактор контента.
Уже есть условие для выбора роли:
/sitecore/system/Settings/Rules/Common/Conditions/Security/User Role
Так что вам просто нужно создать действие, чтобы перейти в обычный режим. В своем действии вы можете вызвать следующий код:
Context.Site.SetDisplayMode(Sitecore.Sites.DisplayMode.Normal, Sitecore.Sites.DisplayModeDuration.ResetAfterRequest);
Заверните его в чек, как предложил wilsjd.
Немного информации о движке правил, если вы с ним не знакомы:
Разделение через движок правил
Все о механизме правил Sitecore ASP.NET CMS