SSI расшифровывается как Server Side Include. SSI – это набор команд, позволяющий включить в страницу информацию, недоступную средствам HTML. К использованию SSI рано или поздно приходит любой веб-мастер, который уже вырос из возможностей HTML, но еще не дорос до PHP (или платного хостинга с поддержкой оного).
Наиболее часто встречаемая директива SSI – include. Интересно, что познания многих в SSI начинаются и заканчиваются этой директивой. Она позволяет включить в файл, из которого вызывается содержимое другого файла.
Самое очевидное и частое использование – «кирпичное» построение сайтов: в отдельные файлики записываем меню, верхушку сайта с названием и логотипом, низ с копирайтом и пр., и включаем эти блоки в страницы при помощи <!--#include virtual="имя.файла"-->. Получаем что-то типа
<html>
<head>
<title>Супер сайт</title>
</head>
<body>
<!–#include virtual=”/inc/header.inc”–>
текст
<!–#include virtual=”/inc/footer.inc”–>
</body>
</html>
Все удобно, просто, понятно, дизайн меняется едва ли не за 5 минут.
Еще одна популярная директива – echo. О ней знают меньшее число людей, но те кто знает – пользуются ей на всю катушку, сообщая пользователю его IP-адрес, название браузера и страницу с которой он пришел на сайт. Делается это так:
Ваш IP-адресс: <!–#echo var=”REMOTE_ADDR”–>
Ваш броузер: <!–#echo var=”HTTP_USER_AGENT”–>
Вы пришли со страницы: <!–#echo var=”HTTP_REFERER”–>
Помимо echo var есть еще set var. Назначение, я думаю, понятно:
<!–#set var=”admin_mail” value=”admin@domain.ru” –>
Далее по списку полезная директива, которой, я уверен не пользуется почти никто – fsize – выводит размер указанного файла. Очень пригодится тем, кто держит на своем сайте небольшой файловый архив. Используется следующим образом:
<!–#fsize file=”program1.zip”–>
Причем она сама форматирует вывод в соответствии с размером файла (200k, 1,8M). В общем – рекомендую.
Тем, кто публикует на сайте статьи, пригодится директива flastmod. Почти на всех Интернет-ресурсах в конце статьи указывается автор и дата публикации или последнего изменения. Например, на своем сайте www.avtobeginner.ru я вывожу дату публикации и в списке статей, и в конце каждой статьи. Когда сайт находился на бесплатном хостинге я использовал flastmod. Все, что она делает – выводит дату последнего изменения файла. Вот так:
<!–#flastmod file=”article1.shtml”–>
Единственный недостаток – формат вывода определяется настройками сервера, поэтому не стоит сильно удивляться, если выведется что-то типа Saturday, 14-Oct-2006 22:13:11 Московское время (зима). Но это дело поправимое с помощью директивы config.
Чтобы вывести дату и время в привычном формате пишем:
<!–#config timefmt=”%d.%m.%Y %H:%M”–>
<!–#flastmod file=”ssi.shtml”–>
И получаем уже 14.10.2006 22:17. Здорово, да?
С помощью этой директивы можно задать также формат для размера файла, выводимого fsize:
<!--#config sizefmt="abbrev"--> – с аббревиатурой килобайт или мегабайт (k , M)
<!--#config sizefmt="bytes"--> – в байтах
И сообщение, которое видит пользователь при ошибке выполнения SSI:
<!–#config errmsg=”Возникла ошибка! Напишите о ней на webmaster@domail.ru”–>
Это сообщение заменит стандартное, которое видели хотя бы раз в жизни, наверно, все:
[an error occurred while processing this directive]
И, наконец, самая продвинутая, полезная и нужная директива – if. Назначение – управление выводом данных на страницу:
<!–#if expr=”УСЛОВИЕ1″ –>
Код, который будет выводиться, если УСЛОВИЕ1 выполняется
<–#else –>
Код, который будет выводиться в противном случае
<–#endif –>
Есть и более сложная конструкция – вложенный if:
<!–#if expr=”УСЛОВИЕ1″ –>
Код, который будет выводиться, если выполняется УСЛОВИЕ1
<–#elif expr=”УСЛОВИЕ2″ –>
Код, который будет выводиться, если УСЛОВИЕ1 не выполняется, а выполняется УСЛОВИЕ2
<–#else –>
Код, который будет выводиться, если ни одно условие не выполняется
<–#endif –>
Применение этой директиве найди достаточно легко. Очень часто на сайтах встречается навигационное меню «Вы находитесь» и далее перечисляется вся иерархия разделов сайта, в которую пользователь имел неосторожность погрузиться в поисках нужной информации. Вещь, без сомненья, нужная и полезная, потому что облегчает пользователю навигацию по сайту (увеличивает юзабилити сайта, как говорят матерые веб-мастера).
Например, такое меню я использую на своем сайте www.avtobeginner.ru. Но он находится на коммерческом хостинге и меню, конечно же меню это написано на PHP.
Вы спросите, а как же быть тем, кто «живет» на бесплатном хостинге без PHP? Неужели им придется добавлять это меню в каждую страницу руками? Ну, это, конечно же, выход. Если сайт состоит из пары страниц, а что если этих страниц 10, 20, 50, 100, …? Здесь как нельзя кстати пригодится SSI:
Вы находитесь: Начинающий водитель
<!–#if expr=”$DOCUMENT_URI=/news/” –> » Новости<!–#endif –>
<!–#if expr=”$DOCUMENT_URI=/arts/” –> » Статьи<!–#endif –>
<!–#if expr=”$DOCUMENT_URI=/links/” –> » Ссылки<!–#endif –>
$DOCUMENT_URI – внутренняя переменная, которая содержит адрес страницы, а запись “$DOCUMENT_URI=/arts/” вернет TRUE, если в адресе документа содержится строка news. Таким образом, если эта конструкция находится в файле arts.shtml или в любом файле в папке /arts/ (иначе говоря, адрес http://www.avtobeginner.ru/arts.shtml или http://www.avtobeginner.ru/arts/), пользователь увидит: Вы находитесь: Начинающий водитель » Статьи. Ну и так далее.
Как видите, SSI предоставляет гораздо больше возможностей, чем простая сборка сайта из блоков и вывод заголовка HTTP_REFERRER. И грамотное их использование поможет очень сильно упростить создание и поддержку сайта.


Здравствуйте, очень полезная статья для новичков, благодарю Вас!
У меня есть вопрос, а можно ли при помощи css скрыть вывод на страницу Пытаюсь создать “Версию для печати”, и хотелось, бы чтобы левое, правое меню и футер туда не попали. (Как бы в прописываем строку и уже используется другой css файл) С уважением, Карина.
в вышележащем сообщении был html код, который автоматически урезался скриптом коментариев, думаю что теперь меня явно никто не поймет, но все равно СПАСИБО.