SharePoint WCM パブリッシング ページの編集と表示の両方のエクスペリエンスを向上させるために、編集モードで Masterpage/PageLayout の特別なセットに切り替えられるようにしたいと考えています。
したがって、 /_catalogs/masterpage には次のものが必要です。
MyMasterpage.master - 表示モードのマスターページ MyMasterpage-edit.master - 編集モードのマスターページ、使用可能な場合のみ使用 MyPageLayout.aspx - 表示モードのページレイアウト MyPageLayout-edit.aspx - 編集モードのページレイアウト、使用可能な場合のみ使用
ページ ライブラリに新しい発行ページを作成するときは、MyPageLayout ページ レイアウトを選択します。
ページをレンダリングするときに、サーバー コントロールと同じように、Edit of Display モードであるかどうかを検出したいと考えています。このコントロールは、次のコードを実行してレンダリング モードを決定します。
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 アナリストは最適な編集モードのページを作成でき、フロント エンドの開発者は、編集の雑然とすることなく、クリーンで美しい表示モードのページを作成できます。
これを達成する方法についてのアイデアはありますか? マスターページの切り替えは問題ではないようです。私はかつてこれについてブログ投稿を書きました。難しかったのはページレイアウトの切り替え。