В этом ответе я предполагаю, что вы хотели бы, чтобы «статический текст» поддерживался с помощью визуального редактора (HTML-документ), позволяя вашим пользователям выполнять заголовки, стилизацию, полужирный и т. Д. Если вы просто хотите простобольшое текстовое поле, которое можно упростить.
Начните с создания нового глобального типа данных в перспективе Data - назовите его (в приведенном ниже примере кода я назвал его Maw.Content) и задайте ему два поля:
- FieldKey string (32) (виджет: текстовое поле по умолчанию)
- FieldContent строка (неограниченно) (Widget: Composite.Widgets.String.VisualXhtmlEditor)
После сохранения нового типа данных вы можете добавить в него «записи» - и указать ключ поля и связанный контент.
Это должно позаботиться об управлении контентом - пользовательский интерфейс должен быть довольно удобным для пользователя.Вы можете щелкнуть правой кнопкой мыши тип данных в дереве и использовать команду «Показать в перспективе содержимого», которая отобразит ваш тип данных в Content |Элементы сайта.Таким образом, ваши пользователи вообще не должны использовать перспективу данных.
Попробуйте ограничить доступ пользователей к папке данных просто «Редактировать», если вам не нужны пользователи для добавления / удаления элементов.Щелкните правой кнопкой мыши папку, содержащую элементы данных, и выберите «Редактировать разрешения».
Вывод XHTML из именованного поля В ваших пользовательских элементах управления вы можете получить HTML, связанный с конкретным FieldKey, например так:
using System;
using System.Linq;
using System.Xml.Linq;
using System.Web.UI;
using Composite.Data;
using Composite.Core.Xml;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string fieldKey = "SomeKeyHere";
string xhtmlString;
using( var connection = new DataConnection())
{
xhtmlString = connection.Get<Maw.Content>().Where(f => f.FieldKey == fieldKey).Select(f => f.FieldContent).FirstOrDefault();
}
if (xhtmlString != null)
{
XhtmlDocument htmlDoc = XhtmlDocument.Parse(xhtmlString);
foreach (XNode bodyNode in htmlDoc.Body.Nodes())
{
this.Controls.Add( new LiteralControl(bodyNode.ToString()));
}
}
else
{
this.Controls.Add(new LiteralControl("Unknown FieldKey: " + fieldKey));
}
}
}