Как я могу поддерживать редактируемый пользователем контент в сложном веб-приложении?
Я строю веб-сайт (используя ASP.NET, MVC 3, Razor), и я не использую готовую CMS. Это потому, что я оценил многие существующие CMS и обнаружил, что у них всех есть обширная кривая обучения, тонны функций, которые мне не нужны, и они вынуждают вас к модели, ориентированной на страницы. Под "ориентированной на страницы моделью" я подразумеваю, что вы можете указать общий макет страницы и таблицы стилей, но объект, который может редактировать пользователь, представляет собой целую страницу, которая отображается, например, на центральной панели, и, возможно, вы можете настроить боковые панели также.
Но этот сайт очень ориентирован на дизайн, и должен быть намного более плавным и гранулированным, чем этот. Под "дизайн-ориентированным" я подразумеваю, что сайт был создан в Photoshop графическим дизайнером, и в нем широко используются изображения и сложные стили для отображения дизайна в HTML/css/js. Кроме того, каждая страница на сайте совершенно другая. Есть также элементы пользовательского интерфейса, такие как панели аккордеона, в которых нам нужно, чтобы пользователь мог редактировать содержимое каждой панели, но, конечно, не jQuery+HTML, который обеспечивает аккордеон. Пользователи являются экспертами в данной области, но очень нетехническими.
Так что у меня будет страница со множеством сложных макетов и стилей, к которой я не хочу, чтобы пользователь получал доступ, но внутри этого будет, скажем, div
содержащий текст, который я хотел бы, чтобы пользователь мог редактировать.
Как я могу лучше всего достичь этого?
Пока что я реализую это, имея фрагменты, представляющие собой небольшие единицы html, хранящиеся во внешних файлах, которые пользователь может редактировать. В режиме запуска они загружаются и отображаются встроенными (с небольшой кнопкой "Редактировать это содержимое", если вы вошли в систему и у вас есть разрешения). Если вы нажмете кнопку "Редактировать", вы получите небольшой экран редактирования WYSIWYG, где вы можете редактировать и сохранять изменения. Так что я могу контролировать все эти беспорядочные вещи и добавлять небольшие заполнители для редактируемого пользователем контента. Но это не совсем просто для меня, и мне интересно, есть ли лучший способ.
2 ответа
Ну, я придерживался своего первоначального плана:
Пока что я реализую это, имея фрагменты, представляющие собой небольшие единицы html, хранящиеся во внешних файлах, которые пользователь может редактировать. В режиме запуска они загружаются и отображаются встроенными (с небольшой кнопкой "Редактировать это содержимое", если вы вошли в систему и у вас есть разрешения). Если вы нажмете кнопку "Редактировать", вы получите небольшой экран редактирования WYSIWYG, где вы можете редактировать и сохранять изменения. Так что я могу контролировать все эти беспорядочные вещи и добавлять небольшие заполнители для редактируемого пользователем контента. Но это не совсем просто для меня, и мне интересно, есть ли лучший способ.
Пока это работает достаточно хорошо.
Не хочу этого делать, но, похоже, это самый важный вопрос для того, что я сейчас исследую. Недавно я создал нечто подобное, как вы описали выше, но я извлекаю данные из базы данных вместо статических файлов. Для каждой страницы (например, / about или / contact) в контроллере я извлекаю данные для этой страницы из БД в виде пары ключ / значение строки Json. Ключ - это тег-заполнитель, Значение - это значение.. После десериализации я просто заполняю список и назначаю его ViewBag, а затем в CSHTML I ViewBag.List.Keyname, чтобы получить текст.
У меня есть небольшая панель управления администратора, которая позволяет мне изменять текст в базе данных. Иметь отличные парения, как у вас, - отличная идея!