Глаза страшат, а руки делают

ШАГ 1


  • Синтаксис
  • Простая вставка (#include)

СИНТАКСИС

Фрагменты SSI включаются в HTML-код документа с помощью директив, запакованных в тэги HTML-комментария, например:

<!--#include file = "top1.html" -->

В общей форме это можно представить как

<!--#директива атрибут = "значение" -->

При использовании и назначении переменных может быть и такая, более развёрнутая форма (традиционно имена переменных пишутся заглавными буквами, хотя это и не обязательно):

<!--#директива атрибут = "ИМЯ_ПЕРЕМЕННОЙ" значение = "значение_переменной" -->

Собственно, это почти весь синтаксис. Несколько позже рассмотрим синтаксис условного оператора (единственного оператора в этом языке). Определённую тонкость представляет использование регулярных выражений и спецсимволов, и тут нужно быть очень внимательным.

Важное замечание о пробелах

В большинстве языков программирования наличие/отсутствие пробелов между тэгами, выражениями, операторами не учитывается. SSI в этом отношении ведёт себя странно: иногда вдруг на каком-то из серверов что-то не заработает из-за лишнего пробела или, наоборот, отсутствия такового.

Чтобы всё работало везде и всегда, соблюдайте следующее правило:

<!--#директива[пробел]атрибут[пробел]=[пробел]"значение"[пробел]-->.

Особенно вредным может быть отсутствие последнего пробела (перед закрытием комментария), и в то же время после открывающей скобки его не должно быть.

ПРОСТАЯ ВСТАВКА (#include)

Попробуем что-то сделать. Ну вот, например, такую страничку:


Это главная страница

Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка.


В ней можно выделить 4 элемента:

  1. Шапка
  2. Меню
  3. Содержание
  4. Подвал

Элементы 1,2 и 4 будут и на других страницах сайта. Их можно заслать на все страницы через SSI.

Вот код шапки:

<table width="600" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td>
<img src="kepka.jpg" width="600" height="200" border="0"></td>
</tr>
</table>

Сохраним его в файл с именем kepka.txt.

То же сделаем и с меню. Файл menu.txt:

<table width="600" border="1" cellspacing="0" cellpadding="0" align="center" bgcolor="#800000"><tr>
<td>
<div class="txtmenu"><a href="index.html" class="lnkmenu">Главная</a></div></td>
<td>
<div class="txtmenu"><a href="aboutsite.html" class="lnkmenu">О сайте</a></div></td>
<td>
<div class="txtmenu"><a href="aboutme.html" class="lnkmenu">Обо мне</a></div></td>
<td>
<div class="txtmenu"><a href="links.html" class="lnkmenu">Ссылки</a></div></td>
<td>
<div class="txtmenu"><a href="javascript: alert('Еще не прикрутил');" class="lnkmenu">Гостевая книга</a></div></td>
</tr></table>

Обработаем подвал. Файл niz.txt:

<table width="600" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td>
<img src="niz.jpg" width="600" height="30" border="0"></td>
</tr>
</table>

А теперь заполним главную страницу:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>
Мой сайт - Главная страница</title>
<meta http-equiv=
"Content-Type" content="text/html; charset=Windows-1251">
<link href=
"mainmenu.css" type=text/css rel=stylesheet>
</head>

<body>

<!--#include file = "kepka.txt" -->
<!--#include file = "menu.txt" -->

<table width="600" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td>
<h1 align="center">Это главная страница</h1>
<p>
Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка. Глокая куздра штеко будланула бокра и курдячит бокрёнка.</p></td>
</tr>
</table>

<!--#include file = "niz.txt" -->
</body>
</html>

(Пусть вас не обескураживает такое количество тупых таблиц — ну что с него взять-то, с Васи Пупкина? Но для рабочего примера — это очень удобно: просто, устойчиво и наглядно.)

Директива #include

Теперь подробно проанализируем наши действия.

Директива #include вставляет указанный файл. У неё есть два атрибута.

  • file — вставляет файл из той же директории, что и основной документ. В значении указывается имя вставляемого файла без пути.
  • virtual — вставляет файл из другой директории этого сервера. В значении указывается путь.

В указании пути есть своя специфика, к которой будьте очень внимательны.

НЕ ИСПОЛЬЗУЮТСЯ сокращения «../».

НЕ ИСПОЛЬЗУЮТСЯ протокол (http://) и доменное имя (mysite.ru).

Путь НАЧИНАЕТСЯ СО СЛЭША (/)

Этот начальный слэш является «псевдонимом» корневого адреса (в данном случае — http://froland.ru/).

Например, для данной страницы (http://froland.ru/samodel/ssi1.html) путь virtual был бы /samodel/ssi1.html, а для главной страницы сайта, находящейся в корневой директории, — /index.html.

ПРИМЕЧАНИЕ

Вставка с другого сервера через SSI невозможна.

То, что мы сейчас узнали, используется, наверно, в 80% всех случаев работы с SSI. В следующем шаге продолжим разговор о вставке HTML-кода, но с некоторыми дополнительными условиями.


Следующий шаг >>


 002797