Создание универсальной блочной CMS с помощью Django - PullRequest
1 голос
/ 05 декабря 2011

Дизайнер недавно передал мне дизайн сайта, который я создаю для клиента. Они отличные дизайны, но я действительно ломаю голову над тем, как я собираюсь реализовать это на сайте.

Содержимое может быть легко разбито на блоки или порции данных, где я мог бы выделить текстовую область для ввода текста, пару полей символов для кнопок ссылок и т. Д. И последовательно отобразить их на странице.

Проблема (например, почему я не просто использую Django-CMS и др.) Состоит в том, что блоки совершенно уникальны друг для друга. Есть, пожалуй, 20 разных моделей, которые я бы построил для каждого типа блоков. Вместо того, чтобы взламывать готовые CMS, я хотел бы построить модель Page, а затем просто иметь M2M, который ссылается на упорядоченный список подклассов моего абстрактного класса Block. Я надеюсь, что не потеряю тебя.

Я не понимаю, как я могу это сделать. Эти вопросы приходят на ум:

  • Есть ли простая CMS, которая уже все это делает? Я трачу свое время, пытаясь понять физику?

  • Подклассы My Blocks будут технически другого типа. Нужны ли мне дженерики для сквозного класса M2M для ссылки на них? Это так, как мне это сделать?

  • Как отобразить x различных форм в контексте встроенного администратора? (Я хотел бы иметь страницу формы со списком блоков внизу)

  • Как пользователь может указать тип блока во встроенном элементе управления?


Редактировать: Или, альтернативно, как насчет CMS на основе тегов-шаблонов?

Я думаю о чем-то вроде добавления этого в мой шаблон:

{% editable 'unique_id' 'content-type' %}

Еще один пример:

{% editable 'home-intro' 'text' %}

Тогда я мог бы просто прикрепить их к шаблонам, которые я хочу редактировать, так, как я хочу, чтобы они были редактируемыми, и при входе в систему клиент мог видеть ссылки «Редактировать текст», «Редактировать ссылку», «Редактировать изображение» который просто всплыл в правильном поле.

Это сделало бы вещи более заблокированными, но макет должен оставаться твердым (а клиент ничего не знает о HTML / CSS), так что это один или другой из этих методов IMO.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2011

В прошлом месяце я опубликовал статью (для ознакомления) о том, как создать базовую CMS для Jinja. Этот язык шаблонов не сильно зависит от Django, который я использовал раньше. Вы можете найти это здесь. Он использует шаблонное наследование для заполнения блоков контента. https://codereview.stackexchange.com/questions/5965/review-request-jinja-cms-for-energiekantoor-nl-on-google-app-engine Или введите в Google: Jinja CMS

0 голосов
/ 05 декабря 2011

Не могли бы вы реализовать свои «блоки» как плагины Django CMS?Затем каждая страница просто состоит из нескольких плагинов.

Каждый плагин имеет форму администратора, которая получает данные для себя, а затем шаблон страницы отображает плагин так, как вы этого хотите.

Если вы посмотрите на первую страницу демонстрации django-cms:

https://www.django -cms.org / en / tour-demo /

, вы увидитев (1) выделенный блок плагина - в этом случае блок форматированного текста, который редактируется с помощью TinyMCE или аналогичного.Вы можете определить свои собственные плагины и добавить их на страницы.

...