SSI является единственным нормальным способом вставки внешнего HTML-кода внутрь страницы. К сожалению, не на всех хостингах разрешено использование SSI, что связывает руки многим веб-мастерам.
Здесь я хочу предложить компромиссный вариант, а именно: вместо SSI использовать JavaScript. Сразу скажу, что так красиво, как с SSI, не получится, но, как говорится, "на безрыбье...".
Сразу скажу, что идею придумал не я: почерпнул я ее у сайтов, предлагающих другим сайтам вставить свой блок новостей.
Итак, идея основана на том, что в HTML-страницу нельзя вставить (на уровне клиента) внешний HTML-блок (что, по-моему - большой недостаток стандарта HTML), но можно вставить внешний JavaScript.
Например, так:
< SCRIPT LANGUAGE="JAVASCRIPT" src="js.js" > < /SCRIPT >
При обработке этих строчек клиент должен загрузить файл js.js, отработать его как скрипт и вставить результат в выводимый документ.
Как это не печально, в файле js.js не может быть просто фрагмент HTML-кода, а должен быть именно скрипт, выводящий этот фрагмент. Скрипт довольно простой, но некоторые "заморочки" все-таки есть. Итак, JavaScript-код, выводящий HTML, довольно простой, и выглядит как:
document.write ('строка_HTML-кода\n');
document.write ('строка_HTML-кода\n'); и т.д.
Можно, конечно, написать и так:
document.write ('строка_HTML-кода\n строка_HTML-кода\n...');
это меньше по объему, но, во-первых, не так красиво, во-вторых, строчка получается длинной, неудобной для редактирования.
Вышеуказанная заморочка заключается в том, что не все символы HTML-кода можно передавать "как есть". Так, символ апострофа будет воспринят как конец строки и вызовет ошибку. Кавычки также вызовут ошибку. Поэтому зарезервированные символы должны ставиться после обратного слэша - прямо как в PERL :)
Так, HTML-строка
< INPUT type="submit" >
будет выглядеть в JavaScript-варианте как:
document.write ('< INPUT type="submit" >\n');
Если у Вас есть возможность запускать CGI-скрипты, этот процесс можно автоматизировать, используя специальный скрипт, "готовящий на лету" подобные JavaScript-ы из обычных вставляемых файлов.
Можете, конечно, и вручную составить JavaScript-фрагменты... В таком случае на вашем сервере может вообще не быть какого бы то ни было скриптинга - ни CGI, ни SSI, и этот метод будет работать.
Теперь о недостатках. А они, надо сказать, существенные...
В самом начале я говорил о том, что этот подход - далеко не SSI. И вот почему. Главное отличие в том, что:
1. SSI обрабатывается на сервере. Для пользователей и поисковых машин, обращающихся к Вашему сайту по HTTP, нет никакой разницы, сделана ли эта страница на SSI или это просто "сплошной" HTML-код - к ним попадет уже готовая страница: сервер соберет ее из фрагментов и скажет, что так оно и было :)
2. JavaScript загружается браузером и исполняется им же. Этот механизм работает на уровне клиента, а значит, не надежен. Если у посетителя отключен JavaScript, то он просто не увидит этого "инклюда". Поисковые машины также не будут исполнять этот скрипт и индексировать его результат (собственно, это можно обратить и во благо...). Кроме того, если пользователь сохранит страницу на диск, не сохранив JavaScript, он в дальнейшем также не увидит этого "инклюда".
Слава Богу, что в недостатки нельзя отнести различия JavaScript-объектных моделей NN и IE - благо скрипт очень уж простой :)
Остается утешать себя одним достоинством этого метода: таким образом можно вставлять документы не только со своего сервера, но и с любых других, как это и делают с теми же новостями.
Постоянные ссылки
При копировании ссылка на TeaM RSN обязательна!
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.