Що таке SSI, або Зроби свій сайт простіше! (Частина 2)
В першій частині статті ми розглянули використання технології SSI для полегшення супроводу сайту. Чому для цього не використовувати зв'язку PHP + MySQL? Звичайно, ці інструменти дозволять вирішити завдання набагато ефективніше і ще більш полегшать супровід ... Якщо ви взагалі уявляєте, що означає цей набір букв. В іншому випадку доведеться витратити на їх вивчення не один тиждень, перш ніж ви зможете приступити до створення свого маленького сайту. SSI набагато простіше і може розглядатися просто як кілька додаткових тегів HTML.
Крім того, є причини суто економічного характеру. На комерційних хостингах підтримка SSI є практично завжди, навіть в найдешевших тарифах. Тариф з PHP може коштувати в два-три рази дорожче. SSI часто є навіть на безкоштовних хостингах, що не може не радувати власників сторінок типу «Я і моя собака», якщо собак багато.
Звичайно, коли сайт вже сформований, доведеться витратити якийсь час, переписуючи сторінки під SSI. Але ця робота себе виправдає. Єдиний недолік - ви не зможете переглянути сайт на своєму комп'ютері. Тобто побачити його можна, але все SSI-вставки будуть пропущені. Браузер інтерпретує їх як коментарі і просто ігнорує. Для налагодження доведеться ставити локальний web-сервер. Але це не така вже велика незручність.
Перейдемо до інших можливостей SSI, які принципово недоступні «чистому» HTML. Швидше за все, ви бачили на деяких сайтах напис «Останній раз сторінка оновлювалася ...». Якщо це не виверт, реалізована через javascript і прив'язана до дати комп'ютера користувача, то реалізувати її в HTML неможливо. У SSI це вирішується просто, потрібно тільки вказати ім'я файлу:
Останнє оновлення: # 60 -! - # Flastmod file ="index.shtml"-; # 62;
У вікні браузера ми побачимо щось на кшталт:
Останнє оновлення: Sunday, 30-Mar-2008 18:05:04 Московський час (зима)
Формат представлення дати можна поміняти, для цього є директива:
# 60 -! - # Config timefmt ="format"-; # 62;
Найбільш вживані значення формату такі: «% D» - дата у форматі 03/30/08, «% r» - час у форматі 18:05:04 PM.
За допомогою SSI можна отримувати доступ до деяких спеціальних значень, які називаються змінними оточення. Там досить багато цікавого. Наприклад, змінна HTTP_USER_AGENT містить ідентифікатор використовуваного браузера і операційної системи, а REMOTE_ADDR - IP-адреса відвідувача сайту. Отримати список всіх змінних оточення можна SSI-директивою:
# 60 -! - # Printenv -; # 62;
Найприємнішим є те, що SSI-директиви включають в себе конструкцію if / else. Повний її синтаксис такий:
# 60 -! - # If expr ="УСЛОВІЕ1" -; # 62;
HTML-код, який буде виводитися, якщо УСЛОВІЕ1 істинно
# 60 --- # elif expr ="УСЛОВІЕ2" -; # 62;
HTML-код, який буде виводитися, якщо УСЛОВІЕ1 помилково, а УСЛОВІЕ2 істинно
# 60 --- # else -; # 62;
HTML-код, який буде виводитися, якщо всі умови помилкові
# 60 --- # endif -; # 62;
Ось це вже зовсім інші можливості! Ми можемо перевіряти версію браузера користувача і видавати йому найбільш підходящий html-код. На жаль, непрофесійні сайтостроітелі нечасто звертають увагу на підтримку всіх можливих браузерів. Але і їм є що запропонувати.
Як іноді хочеться, щоб вміст сайту хоч якось змінювалося, створюючи видимість професійного програмного движка. Наприклад, змінювався б рекламний блок на сторінці, видаючи різним відвідувачам різну інформацію. Ось в цьому нам і допоможе SSI-директива if / else. Для цього потрібно тільки підібрати відповідне умова. Найбільш просто прив'язатися до годинника сервера - адже часом постійно змінюється. Дістатися до годин сервера безпосередньо не вийде, тому використовуємо змінну оточення DATE_GMT. У списку форматів часу використовуємо «% S» - тільки секунди. Тепер в нашому розпорядженні є все необхідне. Вставляємо SSI-код:
# 60 -! - # Config timefmt ="% S"-; # 62;
# 60 -! - # If expr = "($ DATE_GMT # 60-20)" -; # 62;
Рекламний блок 1
# 60 -! - # Elif expr = "($ DATE_GMT # 60-40)" -; # 62;
Рекламний блок 2
# 60 -! - # Else -; # 62;
Рекламний блок 3
# 60 -! - # Endif -; # 62;
У нас вийшов рекламний блок, який змінюється три рази на хвилину. Відвідувачі на сайт заходять безсистемно, тому можна вважати, що кожен отримує випадкову рекламу. Кількість умов можна збільшити, хоч по одному на кожну секунду. А можна використовувати формат «% M» і міняти рекламу кілька разів на годину.
Повний список всіх SSI-команд, форматів, прикладів використання легко знайти в Інтернеті. Повірте, освоїти SSI дуже просто і справа того варта!