SSI Что это такое? |
||||
---|---|---|---|---|
Для начала о причинах, побудивших написать меня эту
статью: в обсуждениях членов Всероссийского Клуба Вебмастеров не раз возникали
споры о том, что лучше применять в случае повторяющейся разметки (информации) на
большом количестве страниц - фреймы, JavaScript или SSI (Server Side Includes,
внимание: приведенные примеры работают для XSSI под веб-сервером Apache). Моим
глубоким убеждением является то, что фреймы следует использовать только там, где
без этого действительно никак не обойтись, JavaScript (да и любые другие
клиентские скрипты) слишком капризен и зависит от настроек браузера, поэтому его
можно использовать только для дополнительных возможностей, но никак для
построения, допустим, системы навигации. Я не буду с пеной у рта доказывать, что
технология SSI круче всех гор и яиц, а просто приведу решения часто
встречающихся на практике задач с применением этой технологии. Получение числа: Получение названия
месяца: Получение года: Собственно вывод получившейся
строки: Форматы параметров для config timefmt надо смотреть
для каждой конфигурации веб-сервера отдельно. Приведенный пример - FreeBSD,
Apache. Более подробно см. man timefmt Часто возникает прикладная задача - красивый
многоколоночный дизайн с верхней и нижней шапками, туча баннеров, но при печати
все это не нужно - лишняя бумага, ненужная информация... Поэтому хочется сделать
простой альтернативный вид страницы специально для печати. Чтобы это проделать,
достаточно подготовить два варианта верхней и нижней шапок, один --для экранного
отображения, другой - для печати. В качестве переключения между этими вариантами
используем переменную QUERY_STRING. Ниже приведены принципиальные структуры для
самой страницы (file.html) и для верхней и нижней шапок (top.html и
bottom.html). Ссылка на каждой странице должна быть
вида: Предположим, у нас есть несколько разделов веб-узла,
документы, относящиеся к разделам, лежат в разных директориях. Задача - сделать
так, чтобы в меню навигации по этим разделам пропадала (или не подсвечивалась,
выделялась другим цветом и т.д.) ссылка на тот раздел, в котором находится
пользователь в данный момент. Для этого можно использовать переменную
DOCUMENT_URI. Предположим, у нас стоит задача менять внешний вид
первой страницы узла в зависимости от того, откуда пришел пользователь.
Например, компания Веб 2000 ставит на поддерживаемых ею проектах надпись-ссылку
Supported by Web 2000, а при клике по ней пользователь попадает на первую
страницу веб-узла компании и видит всплывющую подсказку с подробностями о
разработке именно того проекта, с которого он пришел (попробуйте нажать на
ссылку с веб-узла журнала "ОМ" - "Поддержка Веб 2000" - мелким шрифтом в левом
нижнем фрейме - увидите:-). Для реализации этой задачи используется следующая
конструкция: Всем известно, что браузеры различных производителей
и версий по-разному отображают одну и ту же HTML-разметку документа, начиная от
специальных тагов и атрибутов и заканчивая поддержкой различных версий
JavaScript. Для того, чтобы веб-узел выглядел нормально и для одной версии
браузера и для другой или чтобы не сыпались ошибки JavaScript средствами SSI
можно сделать проверку версий или браузеров и выдавать различные варианты
HTML-разметки. Для этого анализируется переменная HTTP_USER_AGENT, в которой
содержится информация о типе и производителе браузера: Самая большая проблема со скриптами заключается в
том, что если есть большое количество наработанного ПО - при смене дизайна
требуется их перенастройка. Хорошо, если ПО сделано правильно и изменение
шаблонов отображения не касается самой математики, однако и в таких случаях
существуют проблемы. Например, на странице поиска было бы неплохо крутить
баннеры и рекламных сетей, но директивы SSI не отрабатываются в файлах .cgi.
Решить подобные проблемы можно использованием SSI следующим образом: не скриптом
обрабатывать шаблоны отображения, а вызывать скрипт из HTML-документа через SSI
(к сожалению, таким образом можно работать только с теми скриптами, которые
используют метод GET - переменная CONTENT_LENGTH не доступна в SSI) Итак, как
это делается Есть HTML-документ, который размечен в общем стиле дизайна. В него
вставляется директива: Часто встречается конструкция на JavaScript, которая
выводит "Здравствуйте, Иван Иваныч!" при заходе на страницу веб-узла. То же
самое можно проделать с помощью SSI директивой: Источник: webportal.fud.ru |