为了改善 SharePoint WCM 发布页面的编辑和显示体验,我希望能够在编辑模式下切换到一组特殊的 Masterpage/PageLayout。
所以在 /_catalogs/masterpage 我想要:
MyMasterpage.master - 显示模式的主页面 MyMasterpage-edit.master - 编辑模式的主页面,仅在可用时使用 MyPageLayout.aspx - 显示模式的页面布局 MyPageLayout-edit.aspx - 编辑模式的页面布局,仅在可用时使用
当我在 Pages 库中创建一个新的发布页面时,我选择了 MyPageLayout 页面布局。
渲染页面时,我想检测我是否处于编辑显示模式,就像服务器控件一样。此控件执行以下代码来确定呈现模式:
private void calculateShouldRender()
{
SPControlMode contextualFormModeFromPostedForm = ConsoleUtilities.GetContextualFormModeFromPostedForm();
if ((SPControlMode.Display == contextualFormModeFromPostedForm) && (PageDisplayMode.Display == this.PageDisplayMode))
{
this.shouldRender = true;
}
else if ((SPControlMode.Edit == contextualFormModeFromPostedForm) && (PageDisplayMode.Edit == this.PageDisplayMode))
{
this.shouldRender = true;
}
else
{
this.shouldRender = false;
}
this.Visible = this.shouldRender;
}
如果渲染模式是编辑,我想切换到 MyMasterpage-edit.master 母版页和 MyPageLayout-edit.aspx 页面布局。
我可以在由服务器控件控制的母版页和页面布局中进行重大切换,但我想拆分职责。SharePoint 分析员可以创建最佳的编辑模式页面,前端开发人员可以创建干净漂亮的显示模式页面,而不会造成编辑混乱。
关于如何做到这一点的任何想法?母版切换似乎不是问题,我曾经写过一篇关于此的博文。困难的事情似乎是页面布局的切换。