Практика розробки 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 та поліпшення її зручності та безпеки. Зрештою, з часом можливе оновлення інтерфейсу і рефакторинг коду.
Порядок роботи
- Розгорнути на хостингу безкоштовну CMS.
- Ознайомитися з адміністративною панеллю і заповнити змістовною інформацією базовий шаблон CMS.
- Вибрати безкоштовний шаблон, розгорнути в CMS, створити повноцінний сайт. Додати сервіси та динамічні елементи.
- Дослідити інші можливості CMS.
Зміст звіту
- Назва та мета виконання лабораторної роботи.
- Скріншоти послідовності роботи з коротким описом кожного з етапів. Вказати доменну адресу створеного акаунту.
- У висновку оцінити зручність використання адміністративної панелі і наявних сервісів.