Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Принципы создания движка сайта (CMS) // Пишем второй прототип // выпуск 8


Изюминка двигателя сайтов
Рассылка Хусамова Сухроба
Выпуск 8. Пишем второй прототип
9 мая 2006 г.

Пишем второй прототип // выпуск 8

Что в выпуске? Начало проектирования прототипа ОСС на языке PHP5: пространство имен, набросок дерева каталогов и их функциональное назначение, требования к новому прототипу.

Приветствую всех! Этим небольшим выпуском я начинаю рассказ о создании второго прототипа на PHP5. Предполагаю, что вы неплохо разбираетесь в программировании вообще и в частности на PHP. В противном случае задавайте вопросы. Вся система будет создаваться, используя все возможности PHP5 и XML+XSLT.

Некоторые соглашения

Начну я с некоторых соглашений. Для начала определимся с пространством имен. Систему я назову Sultana (или по-русски Изюминка) и поэтому, все классы будут начинаться с префикса sf (Sultana Framework). Пока это все. Остальные имена обозначу по ходу повествования.

Пути к файлам я буду обозначать от веб-каталога. Допустим ваш веб-каталог располагается по адресу: z:/home/prototype/www. Тогда вместо абсолютного пути, например, z:/home/prototype/www/sultana/conf/register.xml буду указывать локальный путь, соответственно примеру /sultana/conf/register.xml.

Также обозначу первое представление дерева каталогов:

Каталог Пояснения
/sultana/ Все файлы системы и данных сайтов находятся в отдельном каталоге. Предполагается, что этот каталог задается при установке системы. Таким образом, рядом с ОСС можно устанавливать и другие системы.
/sultana/data/ Различные данные, скапливающиеся по ходу работы системы. То есть, если требуется создавать резервную копию, то этот каталог нужно сохранять целиком. Правда, для полной резервной копии данных требуется дополнительно сохранять и внешние хранилища, например, базу данных в MySQL.
/sultana/data/conf/ В этом каталоге будут храниться общие конфигурационные файлы, относящиеся как к ядру, так и ко всем сайтам. Конфигурационные файлы я тоже отношу к данным сайтов, которые подлежат резервному копированию, ибо они несут информацию о связях между различными данными.
/sultana/data/sites/ Файлы-данные, относящиеся к отдельным сайтам. В каталоге присутствуют подкаталоги, для каждого сайта свой.
/sultana/data/common/ Общие файлы-данные, создаваемые компонентами и приложениями и относящиеся ко всей системе и всем сайтам.
/sultana/templates/ Шаблоны. Шаблоны считаются общими для всех сайтов. К общим также относится база учетных записей. Более подробно структуру этого каталога я буду рассматривать далее в выпусках. Каталог с шаблонами я не считаю необходимым для обязательного резервного копирования.
/sultana/system/ Все скрипты располагаются в отдельном каталоге. Считается, что этот каталог только для чтения. То есть, скрипты-приложения в свой каталог ничего не пишут. Если им требуется создавать файлы с данными, то они их создают в каталогах сайтов либо в каталоге /sultana/data/common/. Каталог /sultana/system/ тоже не предназначен для резервного копирования. Ибо при восстановлении сайтов в конфигурационных файлах будут перечислены все компоненты и приложения, которые следует просто установить из дистрибутивов. Нет смысла делать резервные копии дистрибутивов.
/sultana/system/applications/ Приложения системы. Каждое приложение в своем каталоге.
/sultana/system/components/ Компоненты ядра. Каждый компонент в своем каталоге.
/sultana/system/libraries/ Общие библиотеки.
/sultana/temp/ Для временных файлов. Считается, что в любой момент времени этот каталог можно почистить. В нем будут храниться, к примеру, кэши страниц и прочие подобные временные файлы.

Требования к прототипу

Пока обойдемся без создания контрольной панели для прототипа. Ибо контрольную панель делать крайне долго и без создания фундамента бессмысленно. Потому контролировать прототип будем вручную, правя конфигурационные файлы. Прототип будем делать исходя из следующих требований:

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

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

Установка/удаление компонент и приложений. Нужна полуавтоматическая установка приложений через консоль управления ядром системы.

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

Небольшая библиотека XSL-шаблонов для стандартных элементов. Придется сделать, чтобы увидеть в окне броузера хотя бы строки "Здравствуй, мир!".

Возможность задавать шаблоны для разделов сайта. Опять-таки, без этого мы ничего не увидим на экране. Шаблоны будут поддерживать простейшие возможности по разметке областей вывода.

В итоге, должна получиться система, в которой практически ничего нет, кроме ручного создания навигации и установки приложений. Приложение мы какое-нибудь напишем, которое будет выводить строку "Здравствуй, мир!" и может еще чего-нибудь делать. Но главное, на этом прототипе вы увидите начало моей задумки. А потом пойдем совершенствовать прототип.

На этом я пока остановлюсь. Следующий выпуск выйдет через две недели, не позже 28-го мая. Задержка связана с моим переездом в Ташкент из Санкт-Петербурга. До следующего выпуска!

В следующем выпуске: описание стартового скрипта, конфигурационных файлов, ну, и еще что-нибудь.

Всего доброго!
С вами был Хусамов Сухроб из Санкт-Петербурга.

Адрес для личных сообщений: khusamov@mail.ru или khusamov@yandex.ru
Подписка на дискуссионный лист: inet.webbuild.khusamov.discussion-list@subscribe.ru


В избранное