htmlbook.ru - Для тех, кто делает сайты
Шаг за шагом Графика для Web
Шаг за шагом > SSI по шагам > Директивы SSI

Шаг 2. Директивы 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).
%% - вывод символа %.

Разрешается совмещать между собой любые шаблоны, а также писать дополнительные символы. В примере 2.1 показано использование параметра timefmt.

Пример 2.1. Вывод даты и времени модификации файла.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>SSI</title>
 </head>
 <body> 

  <!--#config timefmt="Дата: %d-%m-%y, время: %T"-->
  <!--#flastmod file="gtm.css"-->
    
 </body>
</html>

В результате данного примера получим строку следующего вида.

Дата: 04-07-05, время: 19:24:09.

Параметр sizefmt

Параметр sizefmt определяет формат вывода размера файла. Синтаксис следующий.

<!--#config sizefmt="bytes | abbrev"-->

Значение bytes отображает размер файла в байтах (3,152), abbrev - в килобайтах (3k) или мегабайтах (6,1M), в зависимости от объема документа. В примере 2.2 показано использование параметра sizefmt.

Пример 2.2. Формат вывода размера файла

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>SSI</title>
 </head>
 <body> 

  <!--#config sizefmt="abbrev"-->
  Объем файла musa.mp3 - <!--#fsize file="musa.mp3"-->
    
 </body>
</html>

Директива include

Директива include вставляет содержимое другого файла в текущий документ. К файлу обязательно должен быть открыт доступ, иначе он не будет показан. У директивы include имеется два параметра: file и virtual.

Параметр file

Указывает путь к файлу относительно текущего документа. Можно использовать как текстовые файлы, так и HTML-документа, а также включать другие SSI-файлы (обычно с расширением shtml). Синтаксис использования следующий.

<!--#include file="URL"-->

Параметр virtual

Задает виртуальный путь к документу на сервере. Синтаксис следующий.

<!--#include virtual="URL" -->

Между параметрами file и virtual есть определенная разница. Если вы применяете путь к документам относительно корня сайта (такой путь характеризуется слешем вначале, например /file.html), то следует использовать параметр virtual. При указании относительного пути, следует воспользоваться параметром file (пример 2.3).

Пример 2.3. Путь к файлу

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <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="значение для вывода"-->

В примере 2.4 показано использование директивы echo для вывода переменной окружения.

Пример 2.4. Вывод значения переменной окружения

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>SSI</title>
 </head>
 <body> 

  <!--#echo var="HTTP_USER_AGENT"-->
    
 </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="команда"-->

Параметр cgi

Выполняет CGI-программу и результат ее выполнения вставляет в указанное место. В качестве параметра указывается адрес программы.

<!--#exec cgi="URL"-->

В примере 2.5 показано одно из применений параметра cgi.

Пример 2.5. Использование директивы exec

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>SSI</title>
 </head>
 <body> 

  <p>Всего прочитало эту страницу <!--#exec cgi="/cgi-bin/counter.cgi"--> 
  человек.</p>
    
 </body>
</html>

В данном примере запускается программа counter.cgi, которая подсчитывает число посетителей данной страницы и записывает его в файл или в базу данных. После этого результат отображается в месте, где стоит строка <!--#exec cgi="/cgi-bin/counter.cgi"-->.

Статья опубликована: 18.09.2005 Последнее обновление: 26.02.2009
SSI по шагам

Copyright Влад Мержевич, по всем вопросам пишите по адресу: vlad@htmlbook.ru