Почти каждый непрофессиональный сайт начинает свое существование в виде нескольких HTML-документов, связанных между собой перекрестными ссылками. Многие так и уходят в таком состоянии в информационную вечность. Но некоторые любительские сайты все же становится популярными, обрастают жирком информационного наполнения, нагуливают объем. Иногда разрастаются до десятков и даже сотен страниц. Но по сути своей остаются набором раз и навсегда сформированных документов.
Поддерживать и обновлять такой сайт — сущее мучение для его владельца. Страница, как правило, состоит из нескольких блоков, причем часть их них неизменна для всех страниц сайта. Это заголовок, навигационное меню, рекламный блок, подвал страницы. Если что-то захочется изменить в одном из таких постоянных блоков, это придется вручную сделать на каждой странице сайта. Удовольствие весьма сомнительное. Часто интересные идеи остаются нереализованными именно из-за большого объема правки десятков отдельных страниц. SSI позволяет значительно облегчить эту работу. Кроме того, технология SSI позволяет делать еще кое-что, принципиально не выполнимое средствами HTML. Использовать SSI просто, хотя знание языка HTML очень поможет. Если вы не испугались, то вперед!
Прежде всего, расшифруем аббревиатуру SSI — Server Side Includes. По-русски, «включения на стороне сервера». Все понятно? Тогда на этом закончим… Хотя лучше будет все-таки пояснить. SSI — это директивы, вставляемые в HTML-код и управляющие web-сервером. Встречая в файле такие SSI-вставки, web-сервер выполняет определенные действия. Например, добавление HTML-кода из другого файла, формирование страниц «на лету» в зависимости от типа браузера и многое другое.
Для того чтобы сервер знал, что страница содержит SSI-вставки, она должна иметь специальное расширение: *.shtml или *.shtm, хотя это определяется конфигурацией сервера. Чаще всего применяется именно *.shtml. О том, что сервер поддерживает SSI, обычно сообщается в описании хостинга или тарифа. Но проверить не помешает. Для этого создадим два файла — first. shtml и second.html. В файл first. shtml скопируем шесть строк:
<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<!--#include file=» second. html"-->
</body>
</html>
В файл second. html запишем всего одну строку:
<b>Работает! <b>
Теперь загрузим эти страницы на сервер и напишем в адресной строке браузера «www.ваш_сайт/first.shtml». Если сервер поддерживает SSI, то после открытия файла мы увидим надпись «Работает!». Если вместо этого написано [an error occurred while processing this directive], тоже поздравляю! SSI работает, но обработать SSI-вставку невозможно. Например, вы могли вставить в код лишние пробелы или по-разному назвать файлы. Скорее всего, на сервере трудится Unix-система, а для нее second. html и Second. html — две большие разницы.
Если не отображается вообще ничего, а поддержка SSI заявлена, то проще всего обратиться в службу технической поддержки. Может быть, вместо расширения *.shtml используется что-то другое или в настройках сайта необходимо явно разрешить выполнение SSI. В любом случае специалисты хостинга постараются вам помочь.
Итак, чем же SSI может помочь при сопровождении сайта? Основная вкусность заключается в следующем. Любой фрагмент, который повторяется на нескольких страницах, мы можем хранить на сервере в единственном экземпляре! Для этого поместим этот фрагмент в отдельный файл, например fragment.html. В этом файле не нужны <html>, <body> и прочие атрибуты «полноценного» html-документа. Там должен быть только сам фрагмент кода, который потом будет вставлен на свое место.
Теперь в любом месте любой страницы сайта, где этот фрагмент понадобится, мы пишем SSI-вставку:
<!--#include file="fragment.html" -->
Файл должен находиться в том же каталоге, что и основной файл. Если вы хотите вынести все файлы-вставки в отдельный каталог, то придется использовать другую команду, в которой указывается полный путь к файлу фрагмента относительно текущего каталога:
<!--#include virtual="/catalog/fragment.html" -->
Таким образом, в основном файле можно оставить только «скелет» страницы, например каркасную таблицу и основной текст, а все постоянные блоки добавлять через SSI-вставки. Полная страница будет формироваться web-сервером «на лету», как бы из отдельных кирпичиков. Тем не менее, пользователю на компьютер придет полная страница, без малейших признаков использования SSI. Если вы измените что-то в фрагменте, это автоматически отобразится на всех страницах, где он используется.
Вы все еще раздумываете? Тогда специально для вас во второй части статьи мы рассмотрим такие вкусности, что сомнений в использовании SSI уже не останется.