Pull to refresh

Вводный обзор CMS Diem

Reading time6 min
Views3K
Полгода назад узнал от коллеги про эту CMS и она меня очень заинтересовала, недавно дошли руки в ней покопаться, спешу поделиться своими впечатлениями с хабражителями и хабрагостями.

Коротко о главном


  • Работает на 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
Tags:
Hubs:
Total votes 45: ↑39 and ↓6+33
Comments40

Articles