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, а также работу с условными операторами. В случае, если потребуется изменить внешний вид этих страниц, достаточно поменять всего три файла. Тут же весь раздел приобретет новый вид. Или можно, отредактировав один единственный файл отключить показ всех картинок в разделе. |