Архив рубрики 'Создание cms'

Объявляю старт разработки…

Создание cms 1 »

…правда пока это будет скорее тренировочный этап, чтобы освоиться со всеми возможностями Zend Framework.

Долго думал, с какой стороны подступиться к разработке CMS на Zend Framework – всё-таки дело это сложное, отвественное и многогранное. И придумал, что раз система управления будет разделяться на две независимых подсистемы – внешней части и админки, то на первом этапе нужно ограничиться модулями внешней части.

Сама админка у меня уже присутствует и работает неплохо, настраивать её тоже очень быстро. А вот внешняя часть пока хромает, не добрался ещё я до её устаканивания. Поэтому совершенно логично начать разбор полётов с ZF и CMS именно с внешней части.

Как уже упоминалось ранее – основу системы управления будут составлять виджеты. Каждый из которых будет выполнен в виде отдельного модуля. Поэтому построение системы начнём именно с виджето-модульного уровня.

Взгляд на CMS с высоты птичьего полёта

Создание cms Оставь комментарий »

Общий принцип работы системы был задокументирован ранее. Теперь поговорим немного о шаблонизаторе.

В моём представлении каждая страница сайта состоит из виджетов, связанных между собой некоторым оформлением (дизайном). Вот примеры виджетов:

  1. главное меню
  2. меню с подпунктами
  3. баннер
  4. форма авторизации
  5. корзина
  6. область основного контента страницы
  7. и т.д.

Почему я выделил слова область основного контента страницы полужирным шрифтом?
Дело в том, что этот момент ещё не очень хорошо продуман. Скорее всего заголовок H1 и путь к этой странице будут выделены в отдельные виджеты. А вот с листалкой уже не так очевидно, да ещё может возникнуть потребность выводить на одной странице несколько элементов контента (например, парочку фотогалерей и один текст).

Какие же роли играют Шаблонизатор и Виджет?

  • В Шаблонизаторе определяется в каком месте будет выводиться тот или иной Виджет.
  • Виджет определяет как именно он будет выводиться и будет ли вообще он при заданных условиях отображать себя.

Такая схема позволяет разрабатывать виджеты совершенно отдельно от реального приложения и добиться их простого повторного использования. Однако она же и накладывает некоторые ограничения. Например: view-скрипт виджета должен идти с ним в одном комплекте, и для каждого момента в нём должны быть прописаны свои css-классы.

Этап 0. Конфигурация системы.

Планирование, Создание cms Оставь комментарий »

После рассмотрения общей схемы функционирования CMS, приступаем к её реализации. Однако для этого необходимо сделать один предварительный шаг.

Этап 0. Конфигурация системы.

В нынешней версии CMS конфигурация системы задавалась в php-массивах. С точки зрения быстродействия – это оптимальный вариант реализации конфигурации системы, но редактировать такую конфигурацию не очень удобно. Кроме того в новой версии системы файлы конфигурации будут разнесены по каталогам соответствующих модулей, что ещё больше затруднит их редактирование, если они останутся в виде php-файлов.

Выход я вижу в использовании Zend_Config_Ini. Этот модуль позволит хранить конфигурацию системы в ini-файлах. Однако, для повышения быстродействии скриптов, не будем вызывать этот модуль при каждом старте системы. Сделаем скрипт, который будет компилировать все ini-файлы в один php-файл конфигурации, аналогичный файлу конфигурации в нынешней версии CMS.

Для реализации такой схемы конфигурации потребуется два модуля

  1. Компилятор ini-файлов в php-файл.
  2. Редактор ini-файлов (что-то вроде реестра в Windows) – такой редактор потребуется для некоторых модулей сайта, настройки которых нужно будет менять в процессе функционирования сайта.

Первый модуль довольно тривиален и будет реализован в первую очередь. Второй модуль более сложен, но для создания рабочего прототипа системы он не потребуется, поэтому его реализацию можно отоложить на потом.

Сосредоточимся на компиляторе ini-файлов в php-файл. Вот задачи этого модуля:

  1. Обойти все подкаталоги application, в котором хранятся все модули системы, и составить список ini-файлов в соответствии с их размещением в каталогах. Названия каталогов будут использоваться для доступа к этим переменным.
  2. Подготовить текстовую переменную, которая затем будет записана в файл /application/config.php. В этом файле будет класс Cfg, предоставляющий доступ только чтения ко всем переменным конфигурации. Класс будет реализован по паттерну Singleton.
  3. Считать каждый ini-файл в Zend_Config_Ini и распарсить его в php-файл.

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

Общая схема функционирования системы

Планирование, Создание cms Оставь комментарий »
  1. На входе скрипт имеет URL и $_REQUEST
  2. Аутентификатор
  3. Роутер
  4. Авторизатор
  5. МОДУЛЬ СТРАНИЦЫ
  6. Шаблонизатор
  7. Виджеты

Аутентификатор
Определяет пользователя, открывающего страницу.

Роутер
Определяет положение страницы относительно корня сайта и определяет какой модуль необходимо вызвать, чтобы её отобразить.

Авторизатор
Проверяет достаточно ли прав у пользователя для отображения этой страницы.

МОДУЛЬ СТРАНИЦЫ
Модуль, определяемый Роутером, для получения основного контента страницы.

Шаблонизатор
Заполняет предложенный шаблон контентом, который сгенерировал Модуль страницы. Определяет состав виджетов на странице и вызывает модули Виджетов, получая от них информацию, необходимую для вывода на странице. После получения информации от Виджетов, отображает сгенерированную страницу.

Виджеты
Активные иконки, меню сайта, баннер, топ новостей, опрос и т.п. – всё это виджеты, которые существуют по своим законам и программируются отдельно.

Три основные идеи и преимущества новой CMS

Планирование, Создание cms Оставь комментарий »
  1. Система разрабатывается на Zend Framework и следует всем его законам
    Преимущество: понятность системы большому количеству разработчиков благодаря чётко документированному процессу написания кода и взаимодействия отдельных частей системы; не требуется освоение новых правил специально для этой системы.
  2. Система состоит исключительно из модулей, каждый из которых можно легко заменить.
    Преимущество: высокая приспособляемость под конкретный проект при минимальных усилиях
  3. Каждый модуль пишется однократно и в дальнейшем в нём только устраняются ошибки, но не добавляется новой функциональности. Вся новая функциональность реализуется в других модулях (которые могут основываться на уже существующих)
    Преимущество: образуется большое количество стабильных модулей, которые можно спокойно использовать для своего проекта, не опасаясь, что в во второй версии он будет полностью несовместим с предыдущей версией.