Полгода назад узнал от коллеги про эту CMS и она меня очень заинтересовала, недавно дошли руки в ней покопаться, спешу поделиться своими впечатлениями с хабражителями и хабрагостями.
Подробное описание и скриншоты далее
Дополнительные требования: APC, mbstring, graphviz, PHP != 5.2.9
Собственно для простого сайта пойдет стандартный виртуальный хостинг, для проектов с нагрузкой используйте VDS с установленным APC
Во-первых, Diem как приложение написанное на symfony-framework сохраняет всю структуру разработки:
yml — конфигурация, встроенный кэш, unit-тесты, трехуровневую структуру шаблонов (layout — module template, partial template)
Во-вторых, в Diem имеется своя логика управления кодом, нотация по именованию, встроенная система поиска, плагины для популярных задач, генерация кода для самописных модулей.
В-третьих, основное преимущество для конечного пользователя на мой взгляд — это удобный интерфейс администрирования контента. Об этом постараюсь рассказать подробно далее.
Главная страница админки выглядит вот так:
Мы видим сводную информацию сгенерированную по логам сервера и статистику google-analytics
В верхней панели — кнопки создания новой страницы, обновление кэша, меню, индикатор использования APC, и отладочную информацию symfony (о длительности выполнения запроса, количеству обращений к БД, использованию памяти и т.д.
Впечатляет, не правда ли? И все это уже идет в установленной версии.
Для написания собственных модулей имеется свой подход: вы описываете структуру БД и поведение модуля в yml файле, например:
Запускаете из консоли ./symfony dm:setup и…
Скрипт генерирует необходимые модули, экшены и шаблоны по указаной схеме и вы уже можете увидеть в админке раздел для управления товарами
На основе ключевых слов list и show генерируются шаблоны для просмотра товаров в виде списка и одиночного показа…
Впечатляет еще больше?
Тогда ждите продолжения статей…
На последок несколько скриншотов, про которые я уже не успеваю написать подробно:
Редактирование формы обратной связи (опять же форма генерируется по yml — настройкам), остается наложить css-дизайн и форма готова к использованию (валидацию, запись в бд, отображение в админке обеспечивает diem)
Остается перетащить мышкой форму в нужное место сайта и все.
В левой вкладке «pages», как вы можете догадаться, прячется структура сайта: используется при редактировании менюшек, для быстрой навигации, наполнении каталогов и т.д.
Ссылки:
Сайт проекта
Сайты созданные на cms-diem
Разработка сайтов на cms-diem
Заинтересованным лицам я предлагаю объединиться для создания адаптированной версии для рунета с расширенным набором готовых модулей (например фотогалерея, интернет-магазин, интеграция с yandex-статистикой...)
Кто хочет «поиграться» — гайд по установке
UPD1: смотрим сколько Diem кушает памяти
с включенным дебагом и стандартными настройками
итого ~15Mb
в обычном режиме (без дебага) и стандартными настройками
итого ~14Mb (1Mb съедает дебаг)
с выключенным swift_mailer (как советуют разработчики symfony для повышения производительности)
также в районе ~14Mb
(swift mailer нигде не вызывался — аутолоад ничего не подгружал, памяти кушаем столько же)
включаем кэш страниц:
итого ~6Mb (экономим еще 8Mb + снижаем до минимума запросы к БД)
интересно сравнить с Joomla и Drupal
Коротко о главном
- Работает на Symfony1.4.
Кто не знаком с symfony — getting started tutorial, official web-site. - Помимо стандартной админки имеет интерактивный интерфейс управления для frontend, все изменения подгружаются via AJAX — что очень удобно при редактировании
- Интегрированная Google Analytics, удобный просмотр логов сервера в виде графиков, генерация админ-интерфейса для самописных модулей, веб-консоль и прочие плюшки
Подробное описание и скриншоты далее
Серверные требования
- Server: Unix (это для production, разработку можно вести на Denwer или xampp )
- PHP version >=5.2.4
- PHP C.L.I. ON
- memory_limit >= 48Mb
- pdo_mysql or pdo_pgsql or pdo_sqlite
- json >= 1.0
- gd
Дополнительные требования: APC, mbstring, graphviz, PHP != 5.2.9
Собственно для простого сайта пойдет стандартный виртуальный хостинг, для проектов с нагрузкой используйте VDS с установленным APC
Прелести Diem
Во-первых, Diem как приложение написанное на symfony-framework сохраняет всю структуру разработки:
yml — конфигурация, встроенный кэш, unit-тесты, трехуровневую структуру шаблонов (layout — module template, partial template)
Во-вторых, в Diem имеется своя логика управления кодом, нотация по именованию, встроенная система поиска, плагины для популярных задач, генерация кода для самописных модулей.
В-третьих, основное преимущество для конечного пользователя на мой взгляд — это удобный интерфейс администрирования контента. Об этом постараюсь рассказать подробно далее.
Админка
Главная страница админки выглядит вот так:
Мы видим сводную информацию сгенерированную по логам сервера и статистику google-analytics
В верхней панели — кнопки создания новой страницы, обновление кэша, меню, индикатор использования APC, и отладочную информацию symfony (о длительности выполнения запроса, количеству обращений к БД, использованию памяти и т.д.
Впечатляет, не правда ли? И все это уже идет в установленной версии.
Для написания собственных модулей имеется свой подход: вы описываете структуру БД и поведение модуля в yml файле, например:
// config/doctrine/shema.yml<br/>
Category:<br/>
columns:<br/>
name: { type: string(20), notnull: true }<br/>
body: { type: clob, extra: markdown }<br/>
<br/>
Product:<br/>
columns:<br/>
category_id: { type: integer, notnull: true }<br/>
name: { type: string(15), notnull: true }<br/>
body: { type: clob, extra: markdown }<br/>
image: { type: integer, notnull: true }<br/>
cost: { type: integer(5), notnull: true }<br/>
relations:<br/>
Category:<br/>
foreignAlias: Products<br/>
Image:<br/>
class: DmMedia<br/>
local: image<br/>
onDelete: RESTRICT<br/>
<br/>
// config/dm/modules.yml<br/>
"Каталог":<br/>
category:<br/>
model: Category<br/>
page: true<br/>
name: "Категория|Категории"<br/>
admin: true<br/>
front: true<br/>
components:<br/>
list:<br/>
cache: true<br/>
show:<br/>
cache: true<br/>
<br/>
product:<br/>
parent: category<br/>
model: Product<br/>
page: true<br/>
name: "Товар|Товары"<br/>
admin: true<br/>
front: true<br/>
components:<br/>
listByCategory:<br/>
filters: [ category ]<br/>
cache: true<br/>
show:<br/>
cache: true<br/>
showLittle:<br/>
cache: true
Запускаете из консоли ./symfony dm:setup и…
Скрипт генерирует необходимые модули, экшены и шаблоны по указаной схеме и вы уже можете увидеть в админке раздел для управления товарами
На основе ключевых слов list и show генерируются шаблоны для просмотра товаров в виде списка и одиночного показа…
Впечатляет еще больше?
Тогда ждите продолжения статей…
На последок несколько скриншотов, про которые я уже не успеваю написать подробно:
Редактирование формы обратной связи (опять же форма генерируется по yml — настройкам), остается наложить css-дизайн и форма готова к использованию (валидацию, запись в бд, отображение в админке обеспечивает diem)
Остается перетащить мышкой форму в нужное место сайта и все.
В левой вкладке «pages», как вы можете догадаться, прячется структура сайта: используется при редактировании менюшек, для быстрой навигации, наполнении каталогов и т.д.
Ссылки:
Сайт проекта
Сайты созданные на cms-diem
Разработка сайтов на cms-diem
Заинтересованным лицам я предлагаю объединиться для создания адаптированной версии для рунета с расширенным набором готовых модулей (например фотогалерея, интернет-магазин, интеграция с yandex-статистикой...)
Кто хочет «поиграться» — гайд по установке
UPD1: смотрим сколько Diem кушает памяти
с включенным дебагом и стандартными настройками
memory_usage = 15653864
memory_peak_usage = 15837840
итого ~15Mb
в обычном режиме (без дебага) и стандартными настройками
memory_usage = 14266416
memory_peak_usage = 14338544
итого ~14Mb (1Mb съедает дебаг)
с выключенным swift_mailer (как советуют разработчики symfony для повышения производительности)
также в районе ~14Mb
(swift mailer нигде не вызывался — аутолоад ничего не подгружал, памяти кушаем столько же)
включаем кэш страниц:
memory_usage = 6275864
memory_peak_usage = 6275864
итого ~6Mb (экономим еще 8Mb + снижаем до минимума запросы к БД)
интересно сравнить с Joomla и Drupal