DataLife Engine > Сеть > SSI - что, когда, как?

SSI - что, когда, как?


3 декабря 2007. Разместил: podpole
Основным, простейшим, но в то же время чрезвычайно мощным инструментом поддержки больших наборов документов является SSI (Server-Side Includes - включения на стороне сервера). Если кто-то из вас знает Си, то он быстро поймет, что SSI чрезвычайно похож на макроязык. С помощью SSI можно не только в зависимости от некоторых условий выводить определенные части документа, не только формировать документ из заранее определенных кусочков, но и вставлять результат работы некоторого CGI сценария или программы прямо в документ.

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

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

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

Теперь приведем пример файла, вставляемого в начало каждого документа сервера http://www.citforum.ru/. Особенностью сервера является то, что каждый раздел имеет свой базовый цвет, и все это создается этим единственным файлом:



<!--#if expr="$DOCUMENT_URI=/\/internet\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/database\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/ofis\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/abtec\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/programming\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/operating_systems\//" -->
<!--#elif expr="$DOCUMENT_URI=/\/abtec\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/ftp\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/news\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/finnews\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/events\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/lists\//" -->



<!--#elif expr="$DOCUMENT_URI=/\/hardware\//" -->


<!--#elif expr="$DOCUMENT_URI=/\/nets\//" -->


<!--#else -->


<!--#endif -->




    
<!--#include virtual="/cgi-bin/Look_new.cgi"-->






Сервер содержит море(!) аналитической информации    
Рубрикатор всех документов CIT Forum




Данный пример иллюстрирует работу с условными операторами, с шаблонами, а также возможность использования вложенных SSI.

Следующий пример иллюстрирует, как с помощью SSI собираются страницы в Кладовой WebClub.ru. Их особенность заключается в наличии повторяющихся блоков одинаково оформленного текста. Достигается это использованием трех шаблонов:

_head.html


Web Club Repository. <!--#echo var="TITLE" -->




">
">



<h>КЛАДОВАЯ</h>



<!--#echo var="TITLE" -->



_item.html




<!--#echo var="I_TITLE" -->  


<!--#if expr="$I_PIC" -->



" width="<!--#echo var="I_PIC_W" -->"
height="<!--#echo var="I_PIC_H" -->" border=0>


<!--#endif -->


<!--#if expr="$I_SITE" -->
Узел поддержки:"><!--#echo var="I_SITE" -->

<!--#endif -->

<!--#if expr="$I_PAGE" -->
Домашняя страница:"><!--#echo var="I_PAGE" -->

<!--#endif -->

<!--#if expr="$I_ARCHIVE" -->
Она сама:"><!--#echo var="I_ARCHIVE" -->

<!--#endif -->

<!--#if expr="$I_LOCALARCHIVE" -->
Она сама у нас: "><!--#echo var="I_LOCALARCHIVE" -->

<!--#endif -->

<!--#if expr="$I_PLATFORM" -->
Платформа: <!--#echo var="I_PLATFORM" -->

<!--#endif -->
<!--#if expr="$I_STATUS" -->
Статус: <!--#echo var="I_STATUS" -->

<!--#endif -->



<!--#if expr="$I_DESCRIPTION" -->
<!--#echo var="I_DESCRIPTION" -->
<!--#else -->
No description.
<!--#endif -->





_foot.html


<!--#include virtual="/materials/banfooter.html"-->


А вот как выглядит на самом деле файл, который вы воспринимаете, как обычный HTML документ (он сокращен для удобства восприятия):

<!--#set var="TITLE" value="HTML редакторы и утилиты" -->
<!--#set var="KEYWORDS" value="HTML,editor,редактор,утилита,utilities,freeware,shareware,free" -->
<!--#set var="DESCRIPTION" value="HTML редакторы и утилиты" -->

<!--#include virtual="_head.html" -->

<!--#set var="I_TITLE" value="Prime Style 1.2" -->
<!--#set var="I_RATING" value="1" -->
<!--#set var="I_PIC" value="ps.gif" -->
<!--#set var="I_PIC_W" value="300" -->
<!--#set var="I_PIC_H" value="225" -->
<!--#set var="I_SITE" value="" -->
<!--#set var="I_PAGE" value="http://www.northnet.com.au/~hardy/prime/" -->
<!--#set var="I_ARCHIVE" value="" -->
<!--#set var="I_LOCALARCHIVE" value="" -->
<!--#set var="I_PLATFORM" value="Windows 95/NT" -->
<!--#set var="I_STATUS" value="Free" -->
<!--#set var="I_DESCRIPTION" value="Простой и наглядный редактор каскадных
стилей. Простой и понятный интерфейс." -->

<!--#include virtual="_item.html" -->


<!--#set var="I_TITLE" value="Web-O-Rama v.4.00" -->
<!--#set var="I_RATING" value="" -->
<!--#set var="I_PIC" value="weborama.gif" -->
<!--#set var="I_PIC_W" value="300" -->
<!--#set var="I_PIC_H" value="225" -->
<!--#set var="I_SITE" value="" -->
<!--#set var="I_PAGE" value="" -->
<!--#set var="I_ARCHIVE" value="" -->
<!--#set var="I_LOCALARCHIVE" value="" -->
<!--#set var="I_PLATFORM" value="Windows 95/NT" -->
<!--#set var="I_STATUS" value="Free" -->
<!--#set var="I_DESCRIPTION" value="Весьма удобный интерфейс, возможность
внешнего просмотра файлов через браузер, открывает сразу много файлов.
Есть встроенный индикатор контроля системных ресурсов." -->

<!--#include virtual="_item.html" -->


<!--#set var="I_TITLE" value="HTML Font Colorizer" -->
<!--#set var="I_RATING" value="3" -->
<!--#set var="I_PIC" value="" -->
<!--#set var="I_PIC_W" value="100" -->
<!--#set var="I_PIC_H" value="100" -->
<!--#set var="I_SITE" value="" -->
<!--#set var="I_PAGE" value="http://home1.inet.tele.dk/theill/hfc.htm" -->
<!--#set var="I_ARCHIVE" value="" -->
<!--#set var="I_LOCALARCHIVE" value="" -->
<!--#set var="I_PLATFORM" value="Windows 95/NT" -->
<!--#set var="I_STATUS" value="Freeware" -->
<!--#set var="I_DESCRIPTION" value="Эта великолепная утилита, котороя
позволит вам создать цветовое перетекание в тексте любым цветом. Достаточно
нажать несколько кнопок." -->

<!--#include virtual="_item.html" -->


<!--#include virtual="_foot.html" -->


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