Шаг 17 - Продолжаем мучение(изучение) SSI

В прошлом шаге я описал достаточно полезные функции SSI, но эти оставил на потом, так как считаю их более важными.

Команда include

Эта команда позволяет вставлять в документ содержимое других текстовых (и не очень :-) файлов.

Для указания файла используются параметры file и virtual. Они аналогичны параметрам команды fsize и flastmod, поэтому не буду на них останавливаться.

Именно эта команда может вам помочь при решении той проблемы с почтовым адресом на вашем сайте. Кстати рекомендую вам пользоваться ей, если ваш сайт без фреймов, т.е. просто в виде таблицы. Тогда вам не придется сотни раз копировать содержимое столбика с кнопками, и естественно позволит безболезненно добавлять новые кнопки.

Пример:

  <!--#include file="toptable.inc" -->

Команда exec

Ну это естественно самая прекрасная команда, которую можно было ждать от SSI. Благодяря ей страницы действительно становятся "живыми".

Эта команда запускает программу или скрипт CGI, и вставляет результат выполнения этой команды.

Параметр cgi содержит путь до программы, которую требуется выполнить. Она будет действовать только если в настройках вашего сервера установлен параметр ScriptAlias и в файле .htaccess указана настройка Options ExecCGI.

Альтернативой параметру exec является cmd. Он выполняет указанную команду посредством /bin/sh (но это для юникса, а для виндов наверно через command.com :-).

  <!--#exec cgi="param.cgi" -->
  <!--#exec cmd="kill -TERM 123" -->

Обработка условий

В SSI существует возможность обрабатывать условия, и в зависимости от них вставлять различные участки текста. Структура и огранизация этих условий очень похожа на директивы компилятора в языке C++.

Структура очень простая:

  <!--#if expr="условие_1" -->
  <!--#elif expr="условие_2" -->
  <!--#else -->
  <!--#endif -->
Принцип работы такой: если условие_1 истинно, то вставляется текст следующий за этой командой до появления команд elif,else или endif. Команды elif и else выполняются, если первое условие оказалось ложным.

Команда endif должна обязательно заканчивать условный блок if.

В качестве условий могут выступать сравнения строк:

  строка
условие принимает значение "истина", если строка не пустая
  строка1 = строка2
  строка1 != строка2
  строка1 < строка2
  строка1 <= строка2
  строка1 > строка2
  строка1 >= строка2
Здесь сравниваются две строки. Условие принимает результат сравнения. Например:
A < Z
условие примет значение "истина".

В качестве условия можно использовать несколько условий связанных логическими операциями.

!_условие_
! - отрицание условия. Принимает значение "истина", если _условие_ ложно.
условие_1 && условие_2
Принимает значение "истина", если оба условия истинны одновременно.
условие_1 || условие_2
Принимает значение "истина", если какое-нибудь из условий истинно.
условие_1 != условие_2
условие_1 = условие_2
Операции "="(равно) и "!="(не равно) сравнивают два условия на эквивалентность.

Приоритет операций такой:

 !     - наивысший приоритет
 =,!=
 &&,|| - низкий
Первыми выполняются операции имеющие высший приоритет.

Ну и пример использования:

  <!--#config timefmt="%Y %j" -->

  <!--#if expr="\"$DATE_LOCAL\" = \"2000 01\"" -->
    <p>С новым 2000 годом !!! УРА !!!
  <!--#else -->
    <p>До нового года еще далеко...
  <!--#endif -->
Хотелось поговорить о задании условий. Для того, чтобы подставить в условие значение переменной установленное командой set, необходимо перед именем переменной поставить знак доллара "$".
 $REMOTE_HOST
В этом случае подставится значение переменной REMOTE_HOST.

Для правильного сравнения сложных строк(содержащих пробелы) их необходимо заключить в двойные кавычки ("), но так как само условие тоже находится в кавычках, то надо перед кавычками внутри условия ставить обратный слэш (\).

 <!--#if expr="\"$name\"=\"Вася Пупкин\"" -->
В результате таких преобразований будут сравниваться строки (name="Илья Муромец")
 "Илья Муромец"="Вася Пупкин"
А не
  Муромец=Вася
Это очень важно !!! Неправильное условие может привести к ошибке сравнения и команда не будет обработана...

Технология SSI позволит вам создавать меняющиеся странички. Используйте ее для оформления в отдельные файлы общих кусков страниц сайта. Это позволит вам не задумываться об их содержании, а сконцентрированть свое внимание на основной части.

Пример:

 <!--#include file="top.inc" -->
 Это основное содержание страницы.
 <!--#include file="bottom.inc" -->
Содержание top.inc
<html>                                                                              
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<meta name="description" content="МОЯ классная страничка !!!">
</head>
<body text=black bgcolor=white link=blue vlink=blue alink=red>
Файл bottom.inc
</body>
</html>

Все с SSI мы полностью разобрались...


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Кузин Андрей - 6.11.99