Главная Что может SSI?

Что может SSI?

Раздел: Новости, 14 марта 2007 2 комментария

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. И грамотное их использование поможет очень сильно упростить создание и поддержку сайта.

Теги:

2 комментария

  1. Карина пишет:

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

  2. Карина пишет:

    в вышележащем сообщении был html код, который автоматически урезался скриптом коментариев, думаю что теперь меня явно никто не поймет, но все равно СПАСИБО.

Оставить комментарий


© 2008–2010 Копилефт и все такое...