Использование SSI в построении сайта - Компьютерная документация по Windows. Оптимизация Windows.
 Компьютерная документация по Windows. Оптимизация Windows.  Компьютерная документация по Windows. Оптимизация Windows. Поиск
  Здравствуйте  [ Новый пользователь ] Домой  .  Статьи по темам  .  Компьютерная документация  .  Личный кабинет  .  Toп 10  .  Карта сайта  

  Навигация

 Главная   Главная
 Главная   Магазин софта
 Темы новостей   Темы новостей
 Топ 10   Топ 10
 Архив новостей   Архив новостей
 Карта сайта   Карта сайта
 Конструктор   Конструктор
 Обзоры   Обзоры
 Интересное   Интересное
 Рассылка новостей   Рассылка новостей
    Полезные ресурсы
 Пользователи   Пользователи
 Поиск   Поиск
 Написать нам   Написать нам
 Тест скорости   Тест скорости


  Наши темы
Windows 8
Windows 7
Windows Vista
Windows XP
Настройка Windows
Реестр Windows
Восстановление системы
MS-DOS
BIOS
Интернет
Microsoft Office
Сетевые настройки
Обработка видео
Вебмастеру
Оптимизация Windows
Обзор софта
Технологии, обзоры
Обзоры компьютеров и комплектующих
Рецензии
Полезные советы
Продвижение сайтов

Новые обзоры

Как заработать на ремонте компьютеров

Переработка отходов электроники

Типовые неисправности I:Phone, Pad, Pod и Macbook

Место для вашей электронной души

Ремонт компьютеров в Москве


Использование SSI в построении сайта

Размещено 29/01/2007

Вебмастеру Александр Ковальский
В этой статье я приблизительно расскажу о том как практически использовать технологию SSI.
Естественно это не 100% вариант, вариации возможны, одна из главных задач - понять "а зачем это нужно". Нужно учесть:
Прежде всего поддерживает ли Ваш сервер технологию SSI
Что дочерними файлами являются SHTML странички, которые в свою очередь тоже обрабатываются на наличие SSI.
Что "переменных окружения" ("environment variables") типа: DO*****ENT_NAME в дочерних документах показывает родительские параметры
Что переменные передаются дочерним и следующим по выполнению документам кроме - указания ошибок
Что пути к скриптам в дочерних документах идут относительно дочерних документов
Что пути к графике при выводе идут относительно родительского документа.


Структура странички выглядит приблизительно вот так:
Родитель news.shtml

<html>
<head>

Переменные SSI
Имя страницы <title>Название странички</title>
Мэтатеги <!--#include virtual="путь_к_скрипту/mt.shtml" -->
Стили <!--#include virtual="путь_к_скрипту/styles.shtml" -->
JavaScript <!--#include virtual="путь_к_скрипту/js.shtml" -->
</head><body>
Верх сайта <!--#include virtual="путь_к_скрипту/top.shtml" -->
Табличка - структура сайта, для примера разбита на 3 частей.

SSI path/left.shtml SSI path/start.shtml SSI path/right.shtml

Низ сайта <!--#include virtual="путь_к_скрипту/botom.shtml" -->
</body></html>

Нужно учесть:
Что и верх и низ сайта (include virtual) не находятся в общей таблице.
Так быстрее будет отображаться информация на экране.

Переменные SSI В этой части создаются переменные которые используются по всему сайту;
одни для удобства,
другие для удобного и быстрого изменения дизайна,
третие для возможности демонстрации навигации и ведения статистики.
Грамматика: #set var=*** value=***
Присваивает новое значение переменной. Например:

<!--#set var="SERVER_ADMIN" value="новый@адрес.ua"-->

Переменные:

Название странички - <!--#set var="NamePage" value="НОВОСТИ" -->
SSI-команда - <!--#config errmsg="[ERROR $NamePage]" --> Выводится при какой то ошибке SSI
URL странички - <!--#set var="WWW" value="http://$HTTP_HOST/km/" --> Обычно это полезно для длинных путей
Цвет бекграунда - <!--#set var="COLORBCG" value="FAF6EF"--> Значок # желательно не ставить
Цвет заливки 1 - <!--#set var="COLORfonA" value="FBF7EE"-->
Цвет заливки 2 - <!--#set var="COLORfonB" value="D8F3D8"-->
Цвет заливки 3 - <!--#set var="COLORfonС" value="008000"-->
Цвет титров 1 - <!--#set var="COLORtitrA" value="800000"-->
Цвет титров 2 - <!--#set var="COLORtitrB" value="008000"-->
Цвет титров 3 - <!--#set var="COLORtitrС" value="404040"-->

Заменив один из параметров "цвета" у вас поменяется его значение во всех дочерних документах
Для большей наглядности мы перенесем наши переменные на несколько страниц, чтобы у каждой страницы был свой стиль.
На родителе мы оставляем: SSI-команду ошибки и URL странички, но это после такого скрипта

<!--#if expr="$QUERY_STRING=/ssi/" -->
<!--#include virtual="path/varssi.shtml" -->
<!--#elifexpr="$QUERY_STRING=/new/" -->
<!--#include virtual="path/varnew.shtml" -->
<!--#else -->
<!--#include virtual="path/var.shtml" -->
<!--#endif -->
...
<!--#config errmsg="[ERROR $NamePage]" -->
<!--#set var="WWW" value="http://$HTTP_HOST/" -->

В каждом из файлов: varssi.shtml, varnew.shtml и var.shtml вписаны переменные "цвета" с различными параметрами
Как это работает: Если в строке после названия файла будет часть слова с символами "ssi" то считыватся будет страничка varssi.shtml с своими параметрами "цвета"
Соответственно при символах "new" страничка - varnew.shtml. Если ничего подобного не находится - то страничка var.shtml.
Те переменные которые должны быть разными для разных страничек - лучше вписывать в файлы var***.shtml, а те которые раз и на всегда в var.shtml


Имя страницы Проще написать <title>Название странички</title>
Но можно и так <title><!--#echo var="NamePage"--></title>
Переменная NamePage будет использоваться еще много раз, поэтому поменяв переменную в установках "set var=" она меняется автоматически везде.


Мэтатеги Создав один раз страничку mt.shtml со всеми метатэгами Вы избавляетесь от их написания для каждой странички, а также их редактирования в каждой страничке в отдельности.
Нужно учесть что в страничку вы пишете только метатэги без <html><head></body></html> например :
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Некоторые сразу возмутятся что мой FrontPage перегенерирует (создаст заново) все странички с моими изменениями. Да но после этого вам нежно закачать все странички на сервер, а если их 200, а закачав Вы поняли что не все дописали или что не так, и что все сначала. А здесь одну страничку поменяли и для все одинаково.
Теперь другие возмутятся, что не бывает так что у всех страничках одинаковые метатэги должны быть. Да я соглашусь, что некоторые странички должны иметь другие мэтатеги. Как это решить - например:
Содержимое форума не надо кэшировать :

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<!--#else -->
<META HTTP-EQUIV="Cache-Control" CONTENT="Public">
<!--#endif -->

Как это работает: Если в имени файла будет строка "forum", то впишется строка с параметром "no-cache", для всех остальных строка с параметром "Public".


Стили Как и в предыдущем варианте создается файл styles.shtml без html, head, body.
Внутри может быть:
Простая ссылка - <link rel="stylesheet" type="text/css" href="kms.css">
Или выбор в зависимости от браузера

<!--#ifexpr="$HTTP_USER_AGENT=/MSIE/ || $HTTP_USER_AGENT=/Microsoft/" -->
<link rel="stylesheet" type="text/css" href="kmsi.css">
<!--#elifexpr="$HTTP_USER_AGENT=/Opera/" -->
<link rel="stylesheet" type="text/css" href="kmso.css"> <BR><!--#elifexpr="$HTTP_USER_AGENT=/Mozilla/" -->
<link rel="stylesheet" type="text/css" href="kmsn.css">
<!--#else -->
<STYLE type=text/css>
P { FONT-FAMILY: tahoma, verdana, arial, helvetica; FONT-SIZE: 12px}
TD {FONT-FAMILY: verdana, arial, helvetica; FONT-SIZE: 12px}
A {TEXT-DECORATION: none;color: "black"}
A:hover {TEXT-DECORATION: none; COLOR: #800040;}
INPUT {font-family: Tahoma; color:black; font-size=13px;}
</STYLE>
<!--#endif -->

Как это работает: В зависимости от того что находится в переменной ("environment variables") $HTTP_USER_AGENT какой тип браузера у Вас и выводится от сервера к Вам только та часть, которая соответствует браузеру. Ну и если браузер не опредияется то выводится опредиленный набор стиля что после строки <!--#else -->.
Это все конечно размером в байты, но нужно учесть что это все находится в отдельном файле styles.shtml который легко редактировать и работает для всех страниц сайта.


JavaScript Как и в предыдущих вариантах создается файл js.shtml без html, head, body.
Внутри может быть:
Простая ссылка - <SCRIPT language=JavaScript src="/win_open.js"></SCRIPT>
Или выбор в зависимости от страницы

<!--#if expr="$DOCUMENT_NAME!=/forum/" -->
<SCRIPT language=JavaScript src="../js/win_open.js"></SCRIPT>
<!--#endif -->

То есть скрипт будет присутствовать на всех страницах кроме тех в которых в имени будет присутствовать слово forum


Верх сайта Как и в предыдущих вариантах создается файл top.shtml без html, head, body.
Внутри может быть целый комплекс дизайнерского решения, поэтому мы ограничимся большим названием и выводом банера :

<FONT color="#<!--#echo var="COLORtitrA" -->" style="font-size: 22px;text-align: center;"><!--#echo var="NamePage" --></FONT>

То есть на место color (цвет фонта) будет вписана переменная COLORtitrA которую мы определили еще в родительском файле news.shtml и var.shtml там же и переменная NamePage с названием страницы.
Вернемся обратно к файлу top.shtml, и сделаем вывод банера

<!--#include virtual="path/baners.shtml" -->

Вот оно чудо, как часто Вы меняете банерщиков например по обмену, плохой CTR - меняйте. Естественно в одном файле - baners.shtml
хотите свою банерную систему - пожалуйста:

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

Можно что ни буть и по сложнее

<!--#config timefmt="%H"-->
<!--#if expr="DATE_LOCAL>9" -->
<script language="JavaScript" src="http://www.baners.com/ban.cgi"> </script>
<!--#else -->
<!--#include virtual="/cgi-bin/ranban.cgi" -->
<!--#endif -->

То есть понятно после 9 часов дня показываем банера с сайта по JavaScript, а с 0 часов свой внутрений скрипт "рандомайзе показ"


HTML Таблицы
<table width="90%" border="1" cellspacing="0" cellpadding="0" align="center">
<TR><TD>
<!--#include virtual="path/left.shtml" -->
</TD>
<TD>
<!--#include virtual="path/start.shtml" -->
</TD>
<TD>
<!--#include virtual="path/right.shtml" -->
</TD></TR>
</table>

left.shtml
Левая часть сайта здесь мы выводим табличку, с линками по всему сайту. На страничке используются заготовленные переменные цветов и что важно полный адрес линков с переменной WWW

Цвет бекграунда - COLORBCG
Цвет заливки 1 - COLORfonA
Цвет заливки 1 - COLORfonB
Цвет титров 1 - COLORtitrA
Цвет титров 2 - COLORtitrB

<table border="0" cellpadding="0" cellspacing="0" width="120" align="center">
<tr><td color="<!--#echo var="COLORfonA" -->">
<a href="<!--#echo var="WWW" -->/news.shtml">
<FONT color="<!--#echo var="COLORtitrB" -->">news </FONT></a></td></tr>
</table>

А в конце не помешает SSI линк на страничку left_baner.shtml, в которой Ваш набор счетчиков.

<!--#include virtual="left_baner.shtml" -->

start.shtml
Здесь может быть большой набор скриптов но мы ограничимся новостийными выводами с вариациями.
По умолчанию стартует скрипт новостийных заглавий, а при нажатии на заглавие вы попадаете на вывод новостийного блока или конкретной старой новости

<!--#ifexpr="$QUERY_STRING=/new/" -->
<!--#include virtual= "path/news.cgi?$QUERY_STRING&COLORfonA=$COLORfonA&COLORtitrA=$COLORtitrA" -->
<!--#elifexpr="$QUERY_STRING=/old/" -->
<!--#include virtual="path/old_news.cgi?$QUERY_STRING" -->
<!--#else -->
<!--#include virtual="path/zaglavie_news.cgi?$QUERY_STRING" -->
<!--#endif -->

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

right.shtml
Здесь тоже может быть большой набор скриптов, меню, линков в зависимости от различных "переменных окружения" ("environment variables").
Например HTTP_COOKIE

<!--#ifexpr="$HTTP_COOKIE=/Administrator/" -->
<!--#include virtual= "path/admin.cgi?$QUERY_STRING&COLORfonA=$COLORfonA&COLORtitrA=$COLORtitrA" -->
<!--#endif -->

То есть в данном случае только лично у Вас будет выводится скрипт admin.cgi с широкими возможностями по администрированию странички.
И только по тому что у Вас в COOKIE прописано святое слово Administrator
Хотя Вы понимаете что для таких случаев лучше, что-то типа такого kmWmtfSWNlFnLM
Как закодировать и записать в ПЕЧЕНЬЕ такой пароль, это разговор не для этой темы


Низ сайта Как и в предыдущих вариантах создается файл botom.shtml без html, head, body.
Внутри может быть тэги копирайтов , банеров, элементы своей статистики типа:

<!--#includevirtual="stat.cgi?file=$DOCUMENT_NAME&name=$NamePage&$QUERY_STRING"-->

Хороший совет:
Не забывайте в дочерних файлах дописывать SSI-команду -

<!--#config errmsg="[ERROR $NamePage]"-->

А то надпись "[an error occurred while processing this directive]" очень уж не красива
Я желаю что бы у Вас никогда не появлялось таких надписей!
Вот и все.

 



Компьютерная документация по Windows Copyright © 2008-2019