Это архив сайта coldflame.by.ru, он не обновлялся с 2007 года. Мой современный сайт тут: http://leonid.shevtsov.me.
Домой! Обо мне Специально для РИ-06-1 Разнообразное... барахло, короче :) Программы и прочее Статьи и переводы Блог SmartDaemon

SSI для начинающих

Для кого и зачем?

Итак, у тебя есть сайт на http://by.ru. Или на любом другом хостинге, в возможностях которого числится поддержка SSI. Зачем же эта штука нужна?

А затем, что придает страницам некоторую динамичность. SSI значит Server Side Includes. Имеется ввиду, что при отсылке страницы сервер находит в её тексте некоторые директивы и заменяет некоторым текстом. Это дает возможность, например, использовать одну и ту же шапку для всех страниц (и никакой мороки с переписываением кода по 100 раз), скрывать или показывать фрагмент страницы по опреденному условию, параметризовывать страницы, и многое другое.

Основы

Директивы SSI пишутся в комментариях особого вида:

<--#название {параметр="значение"}-->

Все корректные директивы при загрузке страницы будут заменяться на данные. Например:

<--#include virtual="file.txt"-->

будет заменена на содержимое файла file.txt.

Важно! На многих хостингах (тот же by.ru) SSI включен только для файлов с расширением .shtml

Разновидности директив будут рассмотрены по мере применения...

Применение 1. Шапка и подвал.

Цель: сделать так, чтобы у всех страниц была одинаковая шапка (меню и т.п.), и не нужно было её указывать в коде каждой страницы.

Решение: используем include

header.shtml

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>

footer.shtml

</body>
</html>

page.shtml

<!--#include virtual="header.shtml"-->
Текст страницы!
<!--#include virtual="footer.shtml"-->

Результатом, полученным при запросе page.shtml ,будет такая страница:

page.shml, полученная клиентом

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
Текст страницы!
</body>
</html>

Применение 2. Переменные.

Цель: у каждой страницы должнен быть собственный заголовок. Заголовок должен располагаться в шапке, а не до и не после нее.

Решение: используем set и echo

header.shtml

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><!--#echo var="title"--></title>
</head>
<body>

page.shtml

<!--#set var="title" value="Заголовок страницы!"--><!--#include virtual="header.shtml"-->
Текст страницы!
<!--#include virtual="footer.shtml"-->

page.shml, полученная клиентом

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Заголовок страницы!</title>
</head>
<body>
Текст страницы!
</body>
</html>

Важно! Если Вы хотите сохранить корректность тэга DOCTYPE, который должен располагаться в первой строчке документа, пишите все директивы, стоящие до подключения шапки, в одну строчку. Иначе перед содержимым шапки будут идти переводы строк, которые, конечно, игнорируются при обработке директив.

[unfinished: todo]

Возможно, в будущем добавлю другие разделы...