Библиотека веб-дизайна
SSI – Что? Как? Зачем?
© Виталий Трахтенберг
студия веб-дизайна TVYSoftware.com
Многие уже слышали про аббервиатуру ssi, или встречали файлы с расширением (как правило) shtml. Что же это такое?
SSI – Server Side Includes – включения на стороне сервера. На самом деле это представляет собой некий набор команд, вставляемых в текст html-документа. Сервер, на котором расположен сайт, просматривает отдаваемый посетителю документ, и, если встречает ssi-инструкцию, выполняет ее. Для ускорения работы сервера ssi-инструкциям выделено отдельное файловое расширение, как правило shtml, хотя в принципе сервер можно настроить на проверку и обычного htm и html документа.
Основное применение SSI – для создания шаблонов. К примеру, у нас есть сайт, который имеет одинаковый кусок кода на всех страницах (чтобы не суложнять пример, пусть это будет строка копирайта). Тогда в каждый наш файл в то место, где необходимо проставить копирайт, мы вставляем строку
<--#include file=”copyright.inc”-->
и создаем типовой html-файл copyright.inc типа:
<a href=”http://www.tvysoftware.com/”>© TVYSoftware.com</a>, 2003-2004<br>
По вопросам работы сайта <a href=”mailto:webmaster@tvysoftware.com”>пишите веб-мастеру</a>
Вместо file=”…” можно указывать virtual=”…”.
Ключевые слова virtual и file обозначают тип пути, используемый для включения файла, а имя_файла представляет собой путь и имя файла, который требуется включить.
Ключевое слово virtual указывает, что путь начинается с виртуального каталога. Например, если файл menu.inc расположен в виртуальном каталоге /inc, следующая строка вставит содержимое файла menu.inc в файл, содержащий эту строку:
<!-- #include virtual =”/inc/menu.inc” -->
Ключевое слово file указывает, что используется относительный путь. Относительный путь начинается с каталога, содержащего файл, в который включается другой файл. Например, если данный файл находится в каталоге inc, а файл menu.inc — в каталоге cmstemplates, следующая строка вставит файл menu.inc в данный файл:
<!-- #include file =”templatesmenu.inc” -->
Имейте в виду, что путь к включаемому файлу, templatesmenu.inc, является относительным к данному файлу; если сценарий, содержащий эту инструкцию #include, находится не в каталоге /cms, эта инструкция не будет работать.
Еще один плюс от вставки файлов заключается в том, что вместо имени обычного текстового файла в инструкции <#include> можно указывать имя CGI-скрипта. В этом случае сервер сначала выполнит CGI-скрипт, а потом вставит результат работы скрипта в текст веб-страницы. Это означает, что вы сможете реализовать такие вещи как, например, текстовый счетчик посещений или отображение на странице случайно выбранной фразы.
Заметим, что полный перечень команд SSI не ограничивается только инструкцией include.
И еще один момент, который необходимо учесть перед началом экспериментов: для работы с SSI Вам потребуется веб-сервер, поддерживающий эти инструкции – будь то локальный Apache на Вашем тестовом компьютере или хостинг провайдера (большинство бесплатных хостингов не поддерживают SSI-инструкции).
SSI нахаляву!, или как обмануть жадного хостера?
Как уже было сказано выше, не все хостеры предоставляют услуги SSI – как правило, бесплатные хостинги вообще не дают такой возможности; кроме того и некоторые коммерческие хостинги требуют дополнительную плату за включение SSI (хотя на самом деле это пара строк в файле конфигурации!).
Как же получить возможность не тянуть огромные повторяющиеся куски кода из файла в файл?
Мы можем воспользовать такой мощной штукой, как Java Script, поддержка которого встроена непосредственно в броузер и не зависит от хостера. Более того, для работы нам даже не понадобится вообще сервер – можно просто открывать html-файл в броузере.
Итак, трансформируем пример из предыдущего раздела.
Создадим файл menu.js следующего содержания:
document.write('<a href=http://www.tvysoftware.com/>© TVYSoftware.com</a>, 2003-2004');
document.write('По вопросам работы сайта <a href=mailto:webmaster@tvysoftware.com>пишите веб-мастеру</a>');
а в наших html-файлах в месте, в котором надо вставить вывод копирайта, пишем:
<script LANGUAGE=”JAVASCRIPT” SRC=”menu.js” TYPE=”TEXT/JAVASCRIPT” CHARSET=”windows-1251”></script>
Все, можно проверять работоспособность нашей псевдо-SSI инструкции!
Необходимо только заполнить пару простых ограничений:
- В файле .js недопустимо разрывать строку переводом, нажатием на клавишу Enter. Каждая новая строка начинается с document.write(' и заканчивается ');
- Нельзя вставлять скрипт в скрипт, то есть писать <script …. в самом файле .js (впрочем, это ограничение справедливо и для оригинального SSI – во включаемый файл SSI-инструкции прописать нельзя).
При перепечатке любых материалов этого сайта прямая активная ссылка на TVYSoftware.com обязательна!





