SSI
Технологія SSI (Server Side Includes) – потужний та гнучкий засіб для динамічного формування веб-сторінок на стороні сервера. Суть технології полягає в препроцессингу сторінок, що запитуються на серверній стороні на предмет пошуку в них спеціальних команд - директив SSI.
Директиви SSI дозволяють використовувати в HTML документах такі можливості як виконання інших програм, отримання інформації про файли та змінні оточення, об'єднання кількох файлів в один.
Якщо сервер не налаштований на підтримку SSI, команди SSI не обробляються і відправляються користувачеві як є і у веб-сторінці виглядають як коментар.
Создать переменную и передать ей значение:
<!--#set var="PAGE_ID" value="Главная страница"-->Вывести значение переменной:
<!--#echo var='PAGE_ID' -->Чтобы передать переменную, включая переменные среды (например, LAST_MODIFIED), надо указать что это есть переменная, а не буквальная строка, используя знак доллара $ перед именем переменной.
<!-- apache 2.2 style -->
<!-- apache 2.4 style -->
<!--#set var="modified" value="$LAST_MODIFIED" -->Чтобы поместить буквальный знак доллара в значение переменной, нужно экранировать знак доллара с помощью обратного слэша.
<!-- apache 2.2 style -->
<!-- apache 2.4 style -->
<!--#set var="cost" value="\$100" -->Наконец, если вы хотите поместить переменную в более длинную строку, и есть вероятность, что имя переменной столкнется с некоторыми другими символами и, таким образом, будет смущено этими символами, вы можете поместить имя переменная в фигурных скобках, чтобы устранить эту путаницу.
Ось, цікава можливість:
Comments
The syntax for the comment in the .shtml file is:
This comment tag allows a web page designer to insert comments into the .html or .shtml file without having those comments displayed when the browser serves up the page.
Any
which includes the # pound sign is interpreted by the SSI enabled server as a command rather than as a comment. Since it is in the form of a comment, it does not get displayed by the browser. Since it has the pound sign it is interpreted as a command and the results of that command are then displayed by the browser. Commands can vary widely from server to server but the 'echo' command is one of the most common. "Echo" returns to the .shtml document the results of the command.
Переменные
Вывод переменных:
Если кириллица выводится крякозябликами - надо добавить encoding="none"
encoding="none" также надо установить, если в переменной содержится html-код, например:
иначе, текст так и будет выведен на экран: <small>small</small>, а не просто слово "small" меньшим шрифтом, как задумывалось.
Подключить файл или скрипт
Погрузить код из файла:
Погрузить результат выполнения скрипта:
Подробнее про include file/virtual и другие директивы
Передача параметров скрипту
при исполнении htm-файла (без участия человека), работает только так:
А такой вариант не проходит:
Хотя, если запускать так, то все нормально:
но без переменных.
⚠️ На сервере Win2000 для запуска скрипта из тела hml использывал "exec cgi" иначе выводится полный текст скрипта на страницу.
Конструкция if / else
Пример 2.2:
⚠️ с таким расположением кавычек не работает:
➡️ но так можно:
или
Пример 2.4:
Унарные операторы 2.4
-n- True если строка не пустаяOLD:
expr="$SOME_VAR", NEW:expr="-n v('SOME_VAR')"
-z- True если строка пустаяOLD:
expr="!$SOME_VAR"/expr="$SOME_VAR==%%''%%", NEW:expr="-z v('SOME_VAR')"
другие унарные операторы (в т.ч. файлы: сущ., пустой, директ.)
Текущая дата и время на SSI 2.2
2016-06-20 21:48
2.4 🆘 проверь
| TIME_YEAR | Текущий год (например 2010) | | TIME_MON | Текущий месяц ( 01, ..., 12) | | TIME_DAY | Текущий день месяца ( 01, ...) | | TIME_HOUR | Часовая часть текущего времени ( 00, ..., 23) | | TIME_MIN | Минувшая часть текущего времени | | TIME_SEC | Вторая часть текущего времени | | TIME_WDAY | День недели (начиная с 0 воскресенья) | | TIME | Дата и время в формате 20101231235959 | | SERVER_SOFTWARE | Строка версии сервера | | API_VERSION | Дата версии API (макс. Номер модуля) |
Подробнее
Настройка сервера
Модулем SSI по умолчанию обрабатываются файлы с расширением .shtml и .shtm , но можно настроить сервер и на обработку файлов .html и .htm. Для этого необходимо указать в конфигурационном файле Apache (httpd.conf) или в пользовательском файле управления каталогами .htaccess следующие строки:
Примечание: Файл httpd.conf отвечает за настройку всего веб-сервера, не доступен непривилегированному пользователю. Скрытый (dot-файл) .htaccess размещается в пользовательских каталогах и отвечает за их настройки.
Формат директив SSI
Общий синтаксис директивы SSI таков:
Некоторые команды имеют еще и подкоманды:
Директивы SSI
В табл. 1 перечислены основные директивы SSI.
Табл.1 Директивы SSI
Рассмотрим некоторые из перечисленных директив более подробно.
echo
<!--#echo var="переменная_среды"-->
Предназначена для вставки в документ значений специальных переменных SSI, а также других переменных среды.
Пример:
<!--#echo var="HTTP_USER_AGENT"-->
Некоторые переменные окружения:
include
Предназначена для вставки содержимого файла в текущий документ, также может использоваться для вывода результатов работы скрипта.
Аргументы:
file - Путь к файлу, относительно текущей директории. (То есть не может быть абсолютным путем к файлу (начинаться с / или содержать ../).
virtual - Виртуальный (фактический) путь к документу на сервере. Он может начинатся с /, но должен быть на том же сервере.
Пример:
fsize
<!--#fsize file="путь"--> <!--#fsize virtual="путь"-->
Выводит размер файла, формат выдачи может быть изменен командой config
Аргументы:
file - Путь к файлу, относительно текущей директории. (То есть не может быть абсолютным путем к файлу (начинаться с / или содержать ../).
virtual - Виртуальный (фактический) путь к документу на сервере. Он может начинатся с /, но должен быть на том же сервере.
Пример:
<!--#fsize virtual="ssi.htm"-->
flastmod
Выводит дату/время последнего изменения файла, формат выдачи может быть изменен командой config
Аргументы:
file - Путь к файлу, относительно текущей директории. (То есть не может быть абсолютным путем к файлу (начинаться с / или содержать ../).
virtual - Виртуальный (фактический) путь к документу на сервере. Он может начинатся с /, но должен быть на том же сервере.
Пример:
exec
Вызывает внешние программы, формат выдачи может быть изменен командой config.
Аргументы:
cmd - вызов исполняемых программ в UNIX shell.
cgi - вызов CGI скрипта.
Пример:
<!--#exec cmd="/bin/finger vasjapjatkin@mail.ru"--> <!--#exec cgi="/cgi-bin/puperscript.cgi"-->
config
Модифицирует формат вывода для других команд.
Аргументы:
errmsg - формат сообщения об ошибке, которое выдается когда обработчик SSI+ обнаруживает ошибки. Для SSI+ также можно использовать onerr.
Пример: <!--#config errmsg="Ошибка обработки SSI запроса"-->
sizefmt - формат информации об объеме файла. Допустимые значения sizefmt - bytes или addrev. Они задают округление значения объема файла до ближайшего килобайта.
Пример: <!--#config sizefmt="addrev"-->
timefmt - формат значений даты/времени.
Пример:
Некоторые форматы представления даты и времени
Применение SSI
Пожалуй, наиболее значимым достоинством SSI является возможность выполнять шаблонную верстку веб-страниц, собирая их из нескольких файлов. Дело в том, что обычно страницы сайта включают некоторую часть одинаковой информации. Вынося такого рода фрагменты html-кода в отдельные файлы, можно затем повторно использовать их, собирая страницы с помощью SSI.
Типичный пример - это вынесение в отдельный файл логотипа страницы и меню навигации ("шапка"), в другой файл - нижнего колонтитула ("подвал" страницы), тогда третья часть такой страницы может содержать различную информацию. Такой подход позволяет ускорить разработку новых сайтов и упростить модернизацию имеющихся.
Более подробный список переменных strftime
What follows is a summary of the various strftime time output format manipulations available:
Last updated