Технология сайта или как сделать динамический сайт без SSI ?

          Псевдо SSI - возможно ли такое? Да вполне! Итак, представим себе довольно распространенную проблему - отсутствие хостинга с возможностями SSI. Знакомо? То-то! Иными словами вас мучает вопрос, как реализовать некоторые (все, к сожалению нельзя) возможности технологии Server Side Include при полном отсутствии таковых возможностей. На самом деле это не такая уж и проблема. Конечно, полностью заменить эту прекрасную особенность хороших серверов невозможно, но кое-что я посоветую.

          Для начала давайте разберемся, в чем же главная прелесть SSI. Она состоит в том что, имея возможность (в дословном переводе) включать на стороне сервера некоторые инструкции в вашу HTML страницу вы получаете мощный инструмент для управления всем вашим сайтом вообще! Т.е. например, у вас есть блок HTML кода, который повторяется на всех страницах вашего сайта (это может быть меню). Естественно было бы интересно сделать этот блок внешним, т.е. получить возможность изменять его в каком либо отдельном от остальных страниц сайта месте с тем, чтобы это изменение отразилось на всех страницах одновременно. Это позволило бы вам с легкостью вводить новые разделы и даже (если в таком блоке находятся шапки вашего сайта) менять дизайн всего сайта что называется "на лету".

          К вашему (и конечно моему тоже) сожалению сервер, на котором вы держите свой сайт, не позволяет делать этого - не беда. Вы уже находитесь на таком. Как известно Narod.ru не поддерживает клиент-серверные технологии.

          Итак, давайте представим себе некоторый сайт, имеющий, например страницы с такой структурой:

Пример 1

<html>
  <head>
    <title>Мой сайт</title>
  </head>

  <body>

    <!-начало меню -->

    <a href=first.html>первая страница</a>
    <a href=second.html>вторая страница</a>

    <!-конец меню -->
    <!- основное содержание -->

    Всем привет - это мой сайт

    <!-конец основного содержания -->
  </body>
</html>

Что бы мы сделали, будь у нас возможность использовать SSI? Мы сделали бы так:

Пример 2

<html>
  <head>
    <title>Мой сайт</title>
  </head>

  <body>

    <!-начало меню -->

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

    <!-конец меню -->
    <!- основное содержание -->

    Всем привет - это мой сайт

    <!-конец основного содержания -->
  </body>
</html>

При этом файл insert.html, должен выглядеть вот так:

<a href=first.html>первая страница</a>
<a href=second.html>вторая страница</a>

При этом при обращении к данной странице сервер на котором она находится вставит в нее текст содержащийся в файле insert.html, а затем передаст страницу браузеру… При этом при просмотре кода данной страницы вы увидите код в точности соответствующий Примеру 1.

Но как я уже отмечал у нас нет такого "грамотного" :) сервера. Поэтому, для решения той же задачи, мы можем воспользоваться вставкой не на уровне сервера, а на уровне браузера, используя технологию внешних файлов JavaScript:

Пример 3

<html>
  <head>
    <title>Мой сайт</title>
  </head>
  <body>

    <!-начало меню -->

    <script language=javascript src="insert.js">
    </script>

    <!-конец меню -->
    <!- основное содержание -->

    Всем привет - это мой сайт

    <!-конец основного содержания -->
  </body>
</html>

Сам же файл insert.js, должен выглядеть вот так:

<!--
document.write("<a href=first.html>первая страница</a>");
document.write("<a href=second.html>вторая страница</a>");
//-->
Внимание! Команды "document write " в Java Script- это строковые константы, поэтому они должны писаться только в строчку, какой бы длинной она не была!
Еще одно замечание. В этой команде не должно содержаться ни одной кавычки «"» кроме тех, которые стоят около скобок начала и конца команды. В значениях атрибутов тегов нужно ставить «'»или вообще писать значения без кавычек!

Как видно из приведенного примера размер файла вставки увеличивается, да и сам файл усложняется и это плохо - но зато мы, во-первых, добиваемся того же эффекта, как и в случае с Примером 2, а во вторых получаем дополнительную возможность вынести в этот файл какие-либо скрипты, необходимые для управления страницей… При этом при просмотре кода страницы, он останется таким же как и в Примере 3.