Практика розробки CMS

http://habrahabr.ru/post/210264/

Сьогодні для створення і функціонування сайту в мережі існують зручні інструменти. Сучасні CMS дозволяють наповнити сайт необхідним функціоналом і зручно управляти його вмістом. Навіть безкоштовні рішення дозволяють новачкам без проблем наповнювати свій сайт інформацією, не маючи при цьому особливих знань. Але в будь-якій справі є винятки, які вимагають особливого підходу.

Часом сайт повинен мати особливий функціонал або відповідати певним вимогам, які ставить перед розробником замовник. В такому випадку доводитися розробляти додаткові модулі, і не завжди це зручно, а часом і не можливо зробити зі «стандартної» CMS. У подібних випадках для сайту розробляється унікальний «движок», хоча це трапляється вкрай рідко. У більшості випадків розробники (студії) створюють фірмові CMS з інших причин, пропонуючи користувачеві додаткові зручності, функціонал та безпеку.

Проектування CMS

Модульність, розширюваність і простота в управлінні - це основні вимоги до любого веб-проекту. Сама CMS повинна забезпечувати лише базовий функціонал (управління сторінками, структурою сайту і редагування інформації на ньому), який в міру розвитку спроможний розширюватися.

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

Дуже важливо робити адміністрування сайту максимально простим і зрозумілим, щоб клієнт вже через півгодини самостійно міг додавати сторінки, редагувати інформацію, управляти розділами і меню на сайті. Тому, треба максимально спростити процес адміністрування, залишивши лише необхідні функції, які б знадобилися недосвідченому власнику сайту.

Список базових функцій (операцій) адмін-панелі CMS:

  • Загальні налаштування сайту.
  • Створення сторінок (WYSIWYG редактор).
  • Управління сторінками (редагування властивостей і змісту, видалення).
  • Управління розділами (додавання, редагування властивостей).
  • Управління меню (додавання, редагування посилань).
  • Редактор дизайну (візуальний редактор для шаблонів HTML).
  • Робота з модулями (управління настройками модулів).

Цей функціонал повинен задовольнити більшість користувачів (адміністраторів), тому, варто сфокусуватися на зручному інтерфейсі і ергономіці, не навантажуючи її зайвими елементами.

Розробка

Розпочинати роботу слід з файлу index.php, потім з'являються необхідні каталоги, які поступово наповнюються скриптами. Змінюється їх структура, - код переміщається з файлу у файл і попутно оптимізовується. Функції об'єднуються в класи, а в базі даних з'являються нові таблиці і колонки. Перевірка, налагодження та доопрацювання.

Структура

Компоненти веб-сайту які забезпечують його структуру та наповнення, можна умовно поділити на «логічний» і «фізичний» рівень.

  • Таблиці баз даних визначають структуру сайту, і його наповнення (7). Ці дані і є «логічним» (інформаційним) рівнем.
  • «Фізичний» (файловий) рівень (8) містить файли шаблонів і контент (4).

Шаблон це текстовий файл (.html) з фрагментом коду HTML, який визначає дизайн певної частини сторінки і знаходитися в спеціальному каталозі. Сторінки сайту умовно поділено на шість зон (заголовок, ліва колонка, центр, права колонка, нижня лінія і підвал), які складають головний шаблон (каркас). Для кожної зони своя група шаблонів, умовний поділ якої визначає лише дизайн і назву файлу. Тобто, сторінка може бути побудована як мінімум з одного шаблону (наприклад заголовка), і як максимум з шести. Склад шаблонів зберігається в межах розділу, і обумовлює зовнішній вигляд в ньому. Різні розділи відповідно можуть містити різні шаблони і модулі, якщо звичайно в цьому є необхідність.

Спеціальний каталог з скриптами php є модулем, і містить основні файли, що включаються (скрипти) для сайту і адмін-панелі (властивості і налаштування модуля).

Складним питанням є механізм включення модулів в основній виконуваний файл. Серед різних варіантів реалізації цього процесу варто зупинитися на «напівавтоматичному». Для вставки модуля в тому чи іншому місці сторінки, необхідно прописувати спеціальні «мітки» (у вигляді спеціального HTML коментаря), які в процесі обробки (2) замінюються на вміст індексного файлу модуля і вбудовуються в загальний виконуваний код. А вже в адмін-панелі CMS адміністратор визначає, який саме модуль, куди і в який розділ необхідно встановити.

Звичайно це не ідеальний спосіб, адже для включення модуля необхідно правити шаблони, але оскільки CMS розробляється тільки для однієї студії і є «закритою», і всі маніпуляції буде здійснювати розробник, а не замовник, - цей механізм виявився цілком зручним.

Склад таблиць, які відповідають за розділи і сторінки сайту.

Таблиця розділів містить такі основні колонки:

  • ID розділу (унікальний ключ, і ключ прив'язки до сторінок).
  • Префікс розділу (службове ім'я).
  • Назва розділу (назва для зручної ідентифікації або виведення в заголовок).
  • Опис розділу (розширена інформація для адміністратора).
  • Колонки шаблонів (шість колонок для прив'язки шаблонів на каркас сайту (5)).
  • Колонки модулів (шість колонок для прив'язки модулів до шаблонних міток (5)).
  • Прапорці (службові ідентифікатори, тип розділу та іншого).

Таблиця сторінок складається з колонок:

  • ID сторінки (унікальний системний ключ).
  • Розділ сторінки (прив'язка сторінки до розділу).
  • URI (ключ сторінки доступний через URL).
  • Ім'я (назва сторінки, що використовується для заголовка).
  • Опис (додатковий опис).
  • Обкладинка (шлях до графічного файлу ідентифікує сторінку, наприклад у стрічці блогу).
  • Текст (текстова інформація розміщується на сторінці).
  • Прапори (системний ідентифікатор сторінки).
  • Статус (чи є сторінка активної, прихованої або видаленої).

Крім цих двох основних таблиць, існують додаткові таблиці для налаштувань, модулів, бекапа та інших потреб системи.

Структура і логіка CMS

На рисунку зображено спрощену схему структури сайту, що працює на CMS. Суть механізму виведення елементів веб-сторінок описано далі.

При GET запиті (1), проводиться перевірка його (URI) на відсутність сміття, після чого витягується ідентифікатор (3) сторінки і розділу. Після видачі даних про розділ відбувається обробка і уставляння шаблонів і модулів, а також інформації (текст і контент) з полів таблиці, що відповідні до запитуваної сторінки. В іншому випадку - якщо сторінку або розділ не знайдено, то здійснюється редірект на відповідну сторінку помилки.

Практика

Після періоду розробок починається період тестування. Для практичних випробувань можна взяти готовий сайт-візитку. Після розбивання на шаблони він набуде нового динамічного життя, а розробник може приступати до роботи над потрібним модулем, наприклад, фотогалереї, яка завжди буде потрібна для любого сайту.

Розробник вирішує нові завдання і вимоги, що зрештою призводить до вдосконалення CMS та поліпшення її зручності та безпеки. Зрештою, з часом можливе оновлення інтерфейсу і рефакторинг коду.

Порядок роботи

  1. Розгорнути на хостингу безкоштовну CMS.
  2. Ознайомитися з адміністративною панеллю і заповнити змістовною інформацією базовий шаблон CMS.
  3. Вибрати безкоштовний шаблон, розгорнути в CMS, створити повноцінний сайт. Додати сервіси та динамічні елементи.
  4. Дослідити інші можливості CMS.

Зміст звіту

  1. Назва та мета виконання лабораторної роботи.
  2. Скріншоти послідовності роботи з коротким описом кожного з етапів. Вказати доменну адресу створеного акаунту.
  3. У висновку оцінити зручність використання адміністративної панелі і наявних сервісів.