Не так давно,
один мой приятель (тоже web-мастер, только
начинающий) задал мне вопрос: как создать
удобное меню сайта, что бы при добавлении
нового раздела, не было надобности
переклепывать меню на всех страницах сайта.
В общем-то, этот
вопрос мучил и меня довольно длительное
время. Действительно, когда количество
страниц сайта переваливает за сотню,
захекаешься изменять каждую, а потом еще
все это и на сервер загрузить. Но web-мастера
лет пять – шесть назад именно так и
поддерживали веб-сайты, правда, тогда
объемы были порядком меньше, и в каталоге
Yahoo! (www.yahoo.com) -
самом крупном сетевом каталоге ссылок –
было всего-то несколько десятков сайтов.
Засев в свой
компьютерный уголок, куда я садился всегда
готовясь усиленно думать, я стал размышлять,
и попутно, листал книжонку по CGI-программированию.
Если использовать JavaScript, который будет
вставлять в определенное место страницы
информацию из одного файла… удобно, но
JavaScript вещь глючная, и вопреки всем моим (вашим,
их и т.д.) желаниям работать как надо
ВЕЗДЕ и ВСЕГДА все равно не будет. Если
вообще будет работать. И тут, у меня в голове
мелькнула мысль – SSI! Точно! Это то что надо!
Server Side Include –
идеальная возможность заменить в мгновение
ока любую информацию на неограниченном
количестве страниц. Итак: притуливаете
специальный тег SSI в любое место страницы, и
указываете путь к файлу из которого следует
черпать информацию. На экранах это
смотреться будет так:
<!--#include virtual="/folder/file.txt"-->
Таким образом,
броузер, завидев такую строчку, в истерике
кидается к указанному файлу и самым
наглым образом крадет из него все что
только можно украсть, а потом результаты
своего похождения выкидывает на свой фейс.
В принципе, это
достаточно простая технология, и Америку
этой статьей я не открываю, а лишь доношу до
большинства то, что уже кем-то некогда
открыто.
Использовать SSI
можно только если ваш провайдер
поддерживает SSI. Как правило эта фича
присутствует почти всегда, если в системе
провайДЫРА поставлен Perl, и есть поддержка
CGI- или PHP-скриптов. Если поддержки SSI нет, то
ничего у вас вставить не получится. Обидно,
досадно… но увы ничего не поделаешь, а
потому жителям всяких там Boom.Ru и Narod.Ru,
следует забыть, что такое SSI, и как с ним жить.
Итак,
познакомимся с SSI поближе. А именно, давайте
опробуем это созданье богов на практике.
Для создания самого файла, вам ничего не
понадобится кроме стандартного блокнота
для Windows (Notepad for Windows). Запустите его и
наберите в его недрах следующий HTML-код:
<b>text to page</b>
Обычны HTML’ый код.
Ничего нового. Сохраните файл с именем text.txt.
Теперь наберите все в том же блокноте для
Windows:
<html>
<body>
<title>SSI Test</title>
<!--#include virtual=”/text.txt”-->
</body>
</html>
…и сохраните web-страницу
с именем text.shtml. Только внимание! Расширение
*.shtml для страниц, где нужно вставлять SSI,
обязательно! Если вы пропишите html, htm или еще
что-нибудь, получится тот же симпатичный
эффект, который получился бы, если бы вы
пытались врезать SSI на Narod.ru 😉
Теперь сохраните
оба файла в корневой каталог сервера, и
наберите в строке броузера www.x.ru/user/text.shtml
Вместо www.x.ru/user/ ясен пень, наберите путь к
вашей веб-страничке. Если вы увидите на
белом фоне начертанную жирным шрифтом
надпись “text to page”, значит SSI работает
корректно. Вас можно поздравить. Как видите,
все предельно просто. Таким образом,
вставив тег <!--#include virtual=”/text.txt”--> на
неограниченное число страниц, мы получим
один и тот же результат – вывод HTML-кода
введенного в указанный текстовой файл.
Смешно, как все просто, не правда ли? 🙂
Сам метод
подключения SSI уже фича несколько более
запутанная. Путь к файлу казанный во
вставке (<!--#include virtual=”/text.txt”-->) идет
от главного каталога вашего сайта, то бишь,
от корня всего вашего ftp-сервера. И даже если
файл будет расположен где-то в дебрях
директорий (например, /folder1/files/text/) все равно
путь к нему будет идти от корня сервера, и
выглядеть так:
<!--#include virtual=”/folder1/files/text/text.txt”-->
Никаких www, http:// и
прочих прелестей адресных строк быть не
должно, а потому и тулить их не надо. Во
вставке SSI используется локальный путь на
сервере, от главной папки вашей учетной
записи. Вместо текст “include virtual” вы можете
прописать что угодно, даже “vasya pupkin”, но это
“что угодно” должно быть набрано на
латинице.
С SSI работает
большое количество CGI- и PHP-скриптов.
Гостевые книги, счетчики, форумы… все это
может работать через SSI, и это порядком
удобнее чем “голый скрипт”, поскольку,
если это гостевая книга, то настраивать
дизайн всех выводов скрипта, действо
хреноватее, нежели если вставить в обычный
шаблон тег вставки SSI. Единственное что же
может SSI – это загружаться с другого
сервака. То есть во вставляемом коде, нельзя
указать с какого сервера загружать файл.
Именно поэтому при вставке баннерного кода
в большинстве баннерокрутильных систем с
помощью SSI, вместе с кодом SSI, прилагается
специальный CGI-скрипт. SSI обращается к этому
скрипту, а тот в свою очередь отправляет
запрос на сервер баннерокрутилки.
Как это не идиотски
звучит, но на большинстве сайтов по-прежнему все заменяют вручную. К примеру на
Идиот.ру (www.idiot.ru)
я встретил, что на 50% страниц новый пункт меню
появился, а на остальных 50% страниц –
его нет. Был бы задействован SSI, новый пункт
меню можно было бы добавить буквально в два
клика: открыть файл с меню, подписать новый
пункт, и загрузить всю эту багу на сервак.