Директивы SSI
SSI поддерживает несколько команд называемых директивы, предназначенных для разных целей и расширяющих возможности по модификации веб-страниц.
Все директивы записываются в следующем виде.
<!--#директива параметр="значение"-->
Каждая директива начинается с ключевого набора <!--#, пробелы между символами не допускаются. После символа решетки идёт указание директивы, а возможные параметры указываются через пробел.
Имена директив, которые используются в SSI, описаны далее.
Директива config
Позволяет управлять некоторыми опциями SSI, такими как настройка формата вывода даты, времени, размера файла и установка текста сообщения об ошибке.
Параметр errmsg
errmsg устанавливает сообщение, отображаемое при возникновении ошибок. По умолчанию выводится текст [an error occurred while processing this directive], но вы можете поменять его на свой, да ещё написав по-русски. Синтаксис следующий.
<!--#config errmsg="Сообщение об ошибке"-->
Параметр timefmt
Параметр timefmt устанавливает формат даты и времени для директивы flastmod. Синтаксис следующий.
<!--#config timefmt="формат"-->
Для контроля выводимой информации могут применяться следующие шаблоны.
- %a — сокращенное название дня недели
- %A — полное название дня недели.
- %b — сокращенное название месяца.
- %B — полное название месяца.
- %c — формат даты и времени по умолчанию.
- %d — день месяца (от 01 до 31).
- %D — дата в формате мм/дд/гг.
- %e — день месяца без ведущего нуля (от 1 до 31).
- %H — часы в 24-часовом формате (от 00 до 23).
- %I — часы в 12-часовом формате (от 00 до 12).
- %j — день года (от 001 до 366).
- %m — номер месяца (от 01 до 12).
- %M — минуты (от 00 до 60).
- %p — выводит AM или PM в зависимости от времени и заданного формата.
- %r — время с автоматическим добавлением AM или PM.
- %T — время в формате чч:мм:сс.
- %y — год (от 00 до 99).
- %% — вывод символа %.
Разрешается совмещать между собой любые шаблоны, а также писать дополнительные символы. В примере 1 показано использование параметра timefmt.
Пример 1. Вывод даты и времени модификации файла
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SSI</title>
</head>
<body>
<!--#config timefmt="Дата: %d-%m-%y, время: %T"-->
<!--#flastmod file="gtm.css"-->
</body>
</html>
В результате данного примера получим строку вида «Дата: 04-07-97, время: 19:24:08».
Параметр sizefmt
Параметр sizefmt определяет формат вывода размера файла. Синтаксис следующий.
<!--#config sizefmt="bytes | abbrev"-->
Значение bytes отображает размер файла в байтах (3,152), abbrev - в килобайтах (3k) или мегабайтах (6,1M), в зависимости от объёма документа. В примере 2 показано использование параметра sizefmt.
Пример 2. Формат вывода размера файла
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SSI</title>
</head>
<body>
<!--#config sizefmt="abbrev"-->
<p>Объем файла musa.mp3 - <!--#fsize file="musa.mp3"--></p>
</body>
</html>
Директива include
Директива include вставляет содержимое другого файла в текущий документ. Файл обязательно должен быть доступен, иначе он не будет показан. У директивы include имеется два параметра: file и virtual.
Параметр file
Указывает путь к файлу относительно текущего документа. Можно использовать как текстовые файлы, так и HTML-документы, а также включать другие SSI-файлы (обычно с расширением .shtml). Синтаксис использования следующий.
<!--#include file="URL"-->
Параметр virtual
Задает виртуальный путь к документу на сервере. Синтаксис следующий.
<!--#include virtual="URL" -->
Между параметрами file и virtual есть определенная разница. Если вы применяете путь к документам относительно корня сайта (такой путь характеризуется слешем вначале, например /file.html), то следует использовать параметр virtual. При указании относительного пути, следует воспользоваться параметром file (пример 3).
Пример 3. Путь к файлу
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SSI</title>
</head>
<body>
<!--#include virtual="/inc/header.html"-->
<p>...</p>
<!--#include file="../inc/footer.html"-->
</body>
</html>
Директива echo
Директива echo предназначена для вывода значений переменных и даты, формат которой определяется параметром timefmt директивы config. У echo единственный параметр var, он определяет выводимое значение.
<!--#echo var="значение для вывода"-->
В примере 4 показано использование директивы echo для вывода переменной окружения. Об этих переменных пойдёт речь далее.
Пример 4. Вывод значения переменной окружения
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SSI</title>
</head>
<body>
<p><!--#echo var="HTTP_USER_AGENT"--></p>
</body>
</html>
Директива fsize
Директива fsize отображает размер определённого файла. Формат вывода задаётся с помощью параметра sizefmt директивы config. Синтаксис использования следующий.
<!--#fsize file="URL" | virtual="URL"-->
Путь к файлу определяется с помощью параметров file или virtual, которые имеют те же функции, что и для директивы include.
Директива flastmod
Отображает дату последней модификации указанного файла. Формат даты устанавливается через директиву config и параметр timefmt. Синтаксис следующий.
<!--#flastmod file="URL" | virtual="URL"-->
Путь к файлу определяется с помощью параметров file или virtual, которые имеют те же функции, что и для директивы include.
Директива exec
Директива exec вставляет результат выполнения команды или CGI-программы в HTML-документ. Эта директива включает два параметра: cmd и cgi.
Параметр cmd
Запускает указанную командную строку с использованием локального интерпретатора.
<!--#exec cmd="команда"-->
Например, строка <!--#exec cmd="/usr/bin/date" --> исполняет Unix-команду date.
Параметр cgi
Выполняет CGI-программу и результат её выполнения вставляет в указанное место. В качестве параметра указывается адрес программы.
<!--#exec cgi="URL"-->
В примере 5 показано одно из применений параметра cgi.
Пример 5. Использование директивы exec
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SSI</title>
</head>
<body>
<p>Всего прочитало эту страницу <!--#exec cgi="/counter.pl"-->
человек.</p>
</body>
</html>
В данном примере запускается программа counter.pl, написанная на Perl, которая подсчитывает число посетителей данной страницы и записывает его в файл или в базу данных. После этого результат отображается в месте, где стоит строка <!--#exec cgi="/counter.pl"-->.