今回はSitecoreのアイテムのフィールドをエクスペリエンスエディタ上で編集できるようにする方法をご紹介いたします。
編集が可能になるフィールドの取得方法
・controllerでの取得処理
var title = new MvcHtmlString(FieldRenderer.Render(contextItem, "編集したいフィールド名"))
FieldRenderer.Renderを利用してフィールドを取得し、MvcHtmlString型として表示をおこなうとエクスペリエンスエディタ上での編集が可能となります。
ポイント
- 自身で作成したコードをエクスペリエンスエディタ上で編集可能にするためには、FieldRenderer.Renderを利用することで対応した形式で出力が可能となります。
- 取得したフィールドをMvcHtmlString型にすることで、エクスペリエンスエディタはHTMLタグやスクリプトを正しく解釈し、編集可能な状態にすることができます。
編集ができない場合の取得方法
・FieldRenderer.Renderを使用していない場合
vartitle=contextItem.FIelds["編集したいフィールド名"].Value;
FieldRenderer.Renderを使用していないと、上の画像のようにエクスペリエンスエディタ上でのフィールドの選択ができなくなります。
・FieldRenderer.Renderを使用しているが、string型で表示している場合
stringtitle=FieldRenderer.Render(contextItem,"編集したいフィールド名");
この場合エクスペリエンスエディタ上でタイトルのフィールドにHTMLが直接出てしまい、編集ができなくなってしまいます。
エクスペリエンスエディタ対応できている時とできていない時の出力されるHTMLのコード違い
・対応できている場合のHTML
・対応できていない場合のHTML
フィールドをエクスペリエンスエディタに対応した形で取得するとHTMLもエクスペリエンスエディタに対応したものになり、そうでない方法で取得をおこなうとシンプルなHTMLのままとなります。
まとめ
FieldRenderer.Renderを使用してフィールドを取得し、MvcHtmlString型として表示をおこなうとエクスペリエンスエディタ上でフィールドの編集が可能となります。
このようにエクスペリエンスエディタ上でフィールドを選択し、入力ができるようになっていれば編集が可能になっています。