In Sitecore, how to change or set PageMode

断了今生、忘了曾经 提交于 2019-12-23 03:46:11

问题


In Sitecore, I have users who are using the editing ribbon to add content to pages. However, there are some pages that I want to prevent EditMode completely from that user's role. This is based off of a branch template, so I can't just revoke privileges for each page. I need some way to set the Sitecore.Context.PageMode to be Normal.

Is there an API for setting the PageMode?


回答1:


While I was unable to find a C# API, I did find that I could just use a URL Redirect that looks something like this:

        if (!Sitecore.Context.PageMode.IsNormal && !IsAdministrator())
        {
            String id = Sitecore.Context.Item.ID.ToString();
            Response.Redirect("/?sc_mode=normal&sc_itemid=" + id + "&sc_lang=en"); 
        }

This will set the PageMode to Normal if it in any other state.




回答2:


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 />



回答3:


I would suggest that rather than redirecting the user/hard-coding this to specific pages you make create a rule and make use of the Rules Engine. This will allow you to reuse the code and turn on-/off much easier through the content editor.

There is already a condition to select the role:

/sitecore/system/Settings/Rules/Common/Conditions/Security/User Role

So you will just need to create an action to switch to Normal mode. In your action, you can call the following code:

Context.Site.SetDisplayMode(Sitecore.Sites.DisplayMode.Normal, Sitecore.Sites.DisplayModeDuration.ResetAfterRequest);

Wrap it in a check like wilsjd has suggested.

Some info on the Rules Engine if you are not familiar with it:
Decoupling through the Rules Engine
All About the Sitecore ASP.NET CMS Rules Engine



来源:https://stackoverflow.com/questions/13712832/in-sitecore-how-to-change-or-set-pagemode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!