В 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

Другие вопросы по тегам