Веб-сайт складання по цеглинках

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

Звісно, ​​серйозної роботи не зробити без хорошої команди. Але багато веб-майстрів-початківців, які вперше взялися за створення невеликого динамічного сайту, хотіли б мати для цього завдання простий інструмент, який не надто далеко пішов від добре знайомого статичного HTML. У цій статті я намагатимусь продемонструвати, як одна людина без особливого досвіду в програмуванні може побудувати динамічний сайт буквально за один день. У цьому нам допоможе технологія темплейтів, що реалізується за допомогою нескладних скриптів мовою PHP.

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

Варіант 1. Вкладення

Коли веб-сервер зустрічає цей скрипт, він перенаправляє його інтерпретатор PHP, який на місце кожної команди include вставляє текст з відповідного файлу. Сторінку, отриману в результаті збирання, сервер передаєкористувачеві.

Звичайно, генерувати подібним чином окрему сторінку немає сенсу. Але при великій кількості сторінок зі схожим компонуванням деякі блоки (у нашому випадку, наприклад, header.txt і menu.txt) будуть використовуватися багаторазово. Виграш від цього виходить подвійний. По-перше, при необхідності змінити, припустимо, меню, редагувати доведеться тільки один файл, а по-друге, основний текст сторінки у файлі main.txt не буде перевантажений тегами і скриптами, що зовсім не належать до справи, значить, менше буде ризик помилки при редагування.

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

Простота прикладу вражає, але підходить такий спосіб тільки для дуже нескладних сторінок. Головний мінус цього варіанта полягає в тому, що зв'язки розбитих по окремих файлах блоків HTML-коду жорстко задані всередині PHP-скрипту. Для динамічного сайту це годиться.

Варіант 2. Динамічна структура

Завдання - створити сайт із функціями динамічної структури даних. У цьому прикладі ми ближче підійдемо до основного завдання - створити сайт на основі темплейту.

Вигляд основної сторінки (index.php) змінився незначно:

Справа в тому, що все найцікавіше заховано у файлі func.php (див. листинг), який підключається в першому рядку скрипта. Файл func.php складається із двох частин. У першій визначаються значення змінних, які знадобляться надалі, а у другій міститься опис функціїtext, що виконує вставку тексту, що змінюється. У цьому найпростішому прикладі нам знадобилася єдина змінна $text_path , що задає шлях до каталогу, з якого функція text братиме файли.

Може виникнути природне запитання: як же функція text визначить, який файл слід вставити? Адже ми створюємо багатосторінковий сайт. Для доступу до всіх сторінок використовується файл index.php , а для вказівки, якою інформацією заповнити сторінку, служить параметр page, що передається у форматі CGI-запиту, наприклад, index.php?page=news - посилання на сторінку з новинами або index. php?page=photo - для сторінки з фотоальбомом і т. д. Якщо ім'я розділу не було задано, або вказаної сторінки не існує, виводиться текст із файлу index.txt .

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

Варіант 3. Єдиний темплейт для всього сайту

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

Помістимо код темплейта у файл index.php. Він повністю описує структуру нашої сторінки, якщо не зважати на те, що замість основного тексту в ньому міститьсявиклик функції text, замість меню – виклик функції menu, а замість блоку коротких новин – виклик функції news. Код цих функцій розміщений у файлі func.php, який підключається директивою require на початку темплейту.

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

Єдиний мінус полягає в тому, що коли буде написано багато функцій, ви почнете в них плутатися. Якщо це трапилося, значить, сайт уже не можна назвати невеликим та нескладним. Час подумати про повноцінному функціональному движку.