Macromedia Dreamweaver MX

Серверные директивы

Теперь пришла пора поговорить о серверных директивах.

Введение в серверные директивы

Весь НТМЬ-код, из которого состоит ¥еЬ-страница, пересылаемая по Сети, обрабатывается клиентом. Клиентом практически всегда является Veb - обозреватель (существуют и другие программы, обрабатывающие Veb - страницы на стороне клиента, но мы не будем их рассматривать). Именно для ¥еЬ-обозревателя предназначены все эти теги, что мы создаем вручную или в ¥еЬ-редакторе. ¥еЬ-сервер же их совсем не понимает.

Задача ¥еЬ-сервера совсем другая: принять запрос от клиента, найти нуж­ный файл на своих дисках и переслать его клиенту для обработки. Ну и, разумеется, он должен устойчиво работать и потреблять как можно меньше системных ресурсов. Обработка НТМЬ-кода в его обязанности не входит.

Однако разработчики ¥еЬ-серверов все же заставили их понимать некото­рые команды, с помощью которых можно обработать НТМЬ-код. Как вы уже поняли, эта обработка выполняется на стороне сервера, более тсго, са­мим ¥еЬ-сервером. Конечно, эти команды позволяют выполнить самые простые действия: вставить в содержимое одного файла содержимое друго­го, поместить в код текущую дату и т. п. Но даже в этом случае они — хо­рошее подспорье ¥еЬ-дизайнеру.

Эти команды и называются серверными директивами. Несмотря на всю их простоту, они позволяют решить много проблем, неустранимых иными средствами.

Помните, как мы пытались поместить на ¥еЬ-страницу текущую дату? Для этого нам пришлось в свое время писать ¥еЬ-сценарий. А если Veb - обозреватель не поддерживает ¥еЬ-сценарии? А если компьютер, на кото­ром он работает, настолько маломощен, что пользователь отключил под­держку сценариев? В таком случае сценарий, помещающий на страницу да­ту, не выполнится.

¥еЬ-сервер же работает всегда, и серверная директива, осуществляющая вставку в НТМЬ-код текущей даты, выполнится в любом случае. Veb - обозреватель же, загрузивший страницу, даже не будет знать, что эта стра­ница была предварительно обработана сервером. (Вообще-то, об этом дога­даться может если не ¥еЬ-обозреватель, то опытный пользователь, имею­щий представление о ¥еЬ-серверах и их настройке.)

Так же трудно вставить НТМЬ-код, находящийся в одном файле, в другой файл средствами клиентских ¥еЬ-сценариев. ¥еЬ-сервер же с помощью специальной директивы делает это с легкостью. Таким образом, можно соз­давать ¥еЬ-страницы, "собираемые" на стороне сервера из множества час­тей: заголовка, полосы навигации, сведений об авторских правах и, разуме­ется, основного содержимого. Это идеальное решение многих проблем сай­тов, созданных на основе табличного дизайна. Далее об этом будет расска­зано подробнее.

К несчастью, как уже было сказано, серверные директивы никем не стан­дартизировались. Каждый Web-сервер поддерживает свой набор этих дирек­тив, а каких — зависит от доброй воли его создателя. Правда, существует некий набор директив, поддерживаемых большинством серверов, этакий неписаный стандарт "де-факто". Применяя в своих страницах директивы из этого набора, вы можете быть уверены, что они с большой долей вероятно­сти будут поддерживаться сервером, на котором вы собираетесь их (страни­цы) разместить.

А пока что давайте рассмотрим серверные директивы, поддерживаемые по­давляющим большинством Web-серверов, за исключением самых уж прими­тивных. Назовем их стандартным набором серверных директив, хотя их фак­тически никто не стандартизировал. Но все равно перед тем, как применять серверные директивы, обратитесь к документации на Web-сервер или к его администратору, чтобы выяснить, какие директивы ваш сервер поддер­живает.

Стандартный набор серверных директив

Прежде всего, давайте рассмотрим, как серверные директивы вставляются в HTML-код. Проблема заключается в том, что их нужно как-то выделить, чтобы Web-сервер сразу их "увидел", а Web-обозреватель, наоборот, "не за­метил". Поэтому серверные директивы помещаются в тег комментария и помечаются значком # ("решетка"):

<! — #<Директива> <Атрибут1>=<3начение1> <Атрибут2>=<3начение2> ... —>

Однако, кроме этого, надо выполнить еще кое-какие действия. Чтобы Web - сервер "знал", что в какой-либо странице используются серверные директи­вы, нужно изменить расширение файла, в котором сохранена эта страница. Как вы помните, обычно НТМL-файлы имеют расширение htm или html. Так вот: эти расширения нужно изменить соответственно на shtm и shtml.

Подавляющее большинство Web-серверов требуют, чтобы Web-страницы с серверными директивами находились в файлах с расширениями shtm и shtml. Правда, встречаются серверы с другими требованиями (например, малоизвестный Web-сервер со странным названием "я3" требует, чтобы та­кие файлы имели расширение ssi), но подобные случаи весьма редки. И все же, невредно было бы прежде, чем применять в своих страницах серверные директивы, прочитать документацию к серверу или проконсультироваться у его администратора.

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

Include

Директива include вставляет в содержимое текущего файла содержимое дру­гого. (Эта директива также называется серверным включением, а файл, со­держащий включаемый фрагмент кода, — файлом включения). Вставка осу­ществляется в то место файла, где встретилась эта директива. Записывается она так:

<!— #include £Ие="<Имя файла>" —> или так:

<!— #include virtual="<HM« файла>" —>

В первом случае <имя файла> представляет собой обычное имя файла, задан­ное с учетом особенностей файловой системы серверного компьютера. На­пример, так:

<!— #include file="c:Inetpubwwwrootincludesheader. inc" —>

В данном случае в текущий файл вставляется содержимое файла header. inc, находящегося в папке Inetpubwwwrootincludes на диске С.

Во втором случае файл <имя файла> ищется относительно корневой папки сайта. Также он может находиться на другом Web-сайте; в этом случае в качестве значения атрибута virtual указывается полный интернет-адрес этого файла.

<!— #include virtual="/htmls/includes/header. inc" —>

В данном случае файл header. inc располагается в папке htmls/includes, вло­женной в корневую папку сайта.

<!— #include virtual="Http://www. othersite. ru/includes/header. inc" —>

А в этом случае файл header. inc находится вообще на другом сайте.

Существует негласное правило: все файлы включений должны иметь рас­ширение inc (от англ. include — включение). Хотя не возбраняются другие расширения. Также, если у вас имеется достаточно много файлов включе­ний, лучше всего поместить их в особую папку, например includes. В про­тивном случае можно оставить их в той же папке, где находятся все Web- страницы.

Не все Web-серверы поддерживают обе разновидности директивы include. Например, Microsoft Internet Information Server поддерживает только форму с атрибутом file.

Echo

Директива echo помещает в HTML-код содержимое одной из встроенных переменных ¥еЬ-сервера. Она имеет такой синтаксис:

<!— #echo var="<HMH переменной>" —>

В качестве значения атрибута var задается имя нужной переменной. Встро­енные переменные, поддерживаемые большинством Web-серверов, перечис­лены в табл. 14.3.

Таблица 14.3. Встроенные переменные Web-сервера

Переменная

Описание

DOCUMENT NAME

Возвращает имя файла, содержащего текущую УУеЬ-страницу

DOCUMENT URI

Возвращает путь к файлу, содержащему текущую УУеЬ - страницу, относительно корневой папки сайта

DATE LOCAL

Возвращает текущую дату для местной временной зоны

DATE GMT

Возвращает текущую дату по Гринвичу

LAST MODIFIED

Возвращает дату последнего изменения файла текущей УУеЬ - страницы для местной временной зоны

LAST MODDATE

Возвращает дату последнего изменения файла текущей УУеЬ - страницы по Г ринвичу

В частности, именно с помощью данной серверной директивы на страницу помещается текущая дата. Для этого, как вы поняли, нужно использовать директиву:

<!— #echo var="DATE_LOCAL" —>

ИЛИ

<!— #echo var="DATE_GMT" —> если нужно вывести дату по Гринвичу.

Также многие Web-серверы поддерживают другие серверные переменные. Чтобы выяснить их, обратитесь к документации по серверу или к его адми­нистратору.

Как использовать серверные директивы

А сейчас давайте поговорим, как можно использовать серверные директивы.

Ну, насчет директивы echo все ясно. Используйте ее, если на страницу нужно поместить текущую дату или имя файла страницы. Для этого доста­точно подставить в качестве значения атрибута var имя соответствующей переменной.

А вот как можно использовать директиву include?

Для разделения кода Web-страниц на отдельные части.

Зачем это нужно?

Необходимо это во многих случаях. Но нужнее всего, если сайт построен по принципам табличного дизайна, либо странички содержат какие-либо по­вторяющиеся стандартные элементы. В этом случае умелое разделение кода на фрагменты принесет истинное облегчение Web-дизайнеру. Даже если он использует Dreamweaver.

Давайте вернемся назад и вспомним, чем отличаются Web-страницы, по­строенные на основе табличного дизайна, от прочих. Как вы помните, все, что находится на такой странице, представляет собой содержимое одной огромной таблицы, занимающей всю эту страницу. А какие недостатки таб­лиц мы знаем?

Недостаток первый: очень медленная загрузка. Web-обозреватель не может вывести на экран таблицу, пока не загрузит ее целиком. А если таблица до­вольно велика, а канал связи с Интернетом достаточно нетороплив, загрузка может продолжаться очень долго.

Недостаток второй: большой объем получающегося HTML-кода. В самом деле, вспомните, какие размеры были у страниц, созданных на основе таб­личного дизайна! Сравните их со страничками сайта, основанного на фрей­мах! Отчасти это происходит из-за того, что сам код, создающий таблицу, очень велик — это плата за гибкость. Но основная причина этого другая: при использовании табличного дизайна каждая страница включает в себя все повторяющиеся элементы (заголовок, полоса навигации, сведения об авторских правах), которые во втором случае "вынесены" в отдельные фреймы, т. е. размер HTML-кода еще больше увеличивается.

Недостаток третий, свойственный не самим таблицам, а табличному дизай­ну: каждая страница содержит все стандартные, повторяющиеся элементы оформления. А теперь представьте, что вам нужно слегка изменить стан­дартное примечание, а страниц в вашем сайте добрая сотня. Что делать? Открывать каждую из них и вручную править текст? А если вы пропустите какую-нибудь из них? А если забудете сохранить при закрытии? Уже не стоит говорить о том, что перелопатить вручную такое количество страниц трудно чисто физически.

Dreamweaver пытается решить эту проблему, предоставляя уже известные вам шаблоны. Но это не решение проблемы, а половина решения. Да, вы можете внести изменения в шаблон, после чего Dreamweaver за вас будет переносить эти изменения во все страницы сайта. Но это не устраняет про­блему увеличения размеров страниц. Страницы, созданные на основе таб­личного дизайна, все же остаются большими, занимая место на дисках сер­вера, которого всегда не хватает. Более того, размер страниц увеличивается еще за счет разного рода специальных комментариев, вносимых самим Dreamweaver, чтобы выделить HTML-код шаблона.

Так как же решить эту проблему? И есть ли у нее решение?

Есть.

Решение в том, чтобы вынести повторяющиеся элементы страниц в отдель­ные файлы, оставив в них только основное содержимое, т. е. выделить в HTML-коде страницы фрагменты, создающие ее заголовок, полосу навига­ции и сведения об авторских правах, вырезать их и сохранить в других фай­лах. А на их место поместить серверные директивы include, указывающие на эти файлы.

Поясним вышесказанное на примере. Давайте для примера создадим стра­ничку, код которой приведен ниже.

<HTML>

<HEAD>

<ТТТЪЕ>Страница</ТТТЪЕ>

</HEAD>

<BODY>

CTABLE B0RDER="1">

<TR>

CTDXA HREF="pagel. Ы;т">Страни1да 1</A></TD>

<TD R0WSPAN="4">3to основное содержимое страницы.</TD>

</TR>

<TR>

CTDXA HREF="page2 . Ы;т">Страни1да 2</Ax/TD>

</TR>

<TR>

<TDXA HREF="page3. Ы;т">Страни1да 3</Ax/TD>

</TR>

<TR>

<TDXA HREF="page4 . Ы;т">Страница 4</Ax/TD>

</TR>

</TABLE>

</BODY>

</HTML>

Сохраните этот код в файле 14.1.htm и откройте его в Web-обозревателе. Вы увидите нечто, похожее на рис. 14.21.

Эта страница сделана на основе табличного дизайна. Значит, она содержит все повторяющиеся элементы. Давайте вынесем их в другие файлы.

Серверные директивы

Рис. 14.21. Страница-пример, сделанная без использования серверных директив

Сначала нужно выяснить, где находится основное содержимое страницы. В нашем случае это строка: "Это основное содержимое страницы.". Все ос­тальное — повторяющиеся элементы.

Наш случай — самый простой. Мы вынесем все, что находится от тега <body> до приведенной выше строки, в файл 14.Line, а все, что расположено после нее и до тега </body>, — в файл 14.2.inc. А саму страницу переимену­ем в 14.2.shtm. После всех этих пертурбаций ее код будет выглядеть так:

<HTML>

<HEAD>

<Т1ТЬЕ>Страница</Т1ТЬЕ>

</HEAD>

<BODY>

<!— #include file="14.1.inc" —>

Это основное содержимое страницы - <!— #include file="14.2.inc" —>

</BODY>

</HTML>

Как видите, от изначального HTML-кода страницы осталось не так уж и много. А теперь вообразите, что мы проделали такую операцию со всеми страницами большого и сложного сайта. Представляете, насколько умень­шатся все его файлы!

Тогда файл 14.Line будет выглядеть так:

CTABLE BORDER="l">

<TR>

<TDXA HREF="pagel. htm">CTpaHHu, a 1</A></TD>

<TD ROWSPAN="4">

А файл 14.2.inc — так:

</TD>

</TR>

<TR>

<TDXA HREF="page2 . htm">CTpaHHu, a 2</Ax/TD>

</TR>

<TR>

<TDXA HREF="page3. htm">CTpaHHu, a 3</Ax/TD>

</TR>

<TR>

<TDXA HREF="page4 . htm">CTpaHHu, a 4</Ax/TD>

</TR>

</TABLE>

К сожалению, просмотреть страницы этого "дивного нового" сайта в Web - обозревателе мы не сможем. Ни один Web-обозреватель не понимает сер­верных директив, как ни один Web-сервер не понимает HTML-тегов. Это не его обязанности. Чтобы увидеть, как Web-сервер обработает серверные директивы, нам понадобится сам Web-сервер. А его у нас нет.

Поддержка Dreamweaver серверных директив

К сожалению, поддержка серверных включений Dreamweaver MX оставляет желать лучшего.

Разработчики Dreamweaver утверждают, что их программа читает файлы включений, расшифровывает их и выводит в окно документа вместе содер­жимым страницы, использующей эти включения. Так-то оно так, но не со­всем. Dreamweaver действительно выводит содержимое серверных включе­ний в окне документа, но некорректно обрабатывает HTML-разметку: он "проглатывает" весь HTML-код, находящийся в серверных включениях, и выводит только текст. Посмотрите, что он сделал с нашей страницей 14.2.shtm (рис. 14.22).

Серверные директивы

Рис. 14.22. Web-страницы, содержащие серверные включения, Dreamweaver отображает некорректно

Иначе, как грубейшей ошибкой, назвать это нельзя. Ведь автор прекрасно помнит, что третья версия Dreamweaver (3.0) нормально отображала содер­жимое файлов включений. Досадно, что новая версия, вместе с новыми возможностями, таит в себе новые ошибки.

Однако не все так плохо. Вы можете отключить вывод содержимого сервер­ных включений; в этом случае они будут просто помечаться особым знач­ком (рис. 14.23). Для этого откройте окно Preferences, выбрав пункт Preferences в меню Edit, и переключитесь на вкладку Invisible Elements. От­ключите флажок Server-Side Includes и нажмите кнопку ОК.

Серверные директивы

Рис. 14.23. Серверные включения, отображаемые в виде значков

На этом поддержка серверных директив include Dreamweaver не заканчива­ется. Вы можете вставить серверное включение в код страницы, выбрав пункт Server-Side Include подменю Script Objects меню Insert или нажав кнопку Server-Side Include (рис. 14.24), находящуюся на вкладке Script па­нели объектов. После этого вам останется только выбрать нужный файл в появившемся на экране диалоговом окне Select File.

Серверные директивы

Рис. 14.24. Кнопка Server-Side Include панели объектов

Если вы выберете значок серверной директивы include, редактор свойств примет вид, представленный на рис. 14.25. С его помощью вы сможете из­менить значения атрибутов этой директивы.

Серверные директивы

Разновидность директивы include — с атрибутом file или virtual — задает­ся с помощью набора переключателей Туре. Вам необходимо будет выбрать нужный переключатель: File или Virtual.

Само имя файла задается в поле ввода Filename. Вы также можете нажать значок папки, расположенный справа этого поля ввода, и выбрать нужный файл в появившемся на экране диалоговом окне Select File.

Нажав кнопку Edit, вы сможете отредактировать файл серверного включе­ния. Dreamweaver отобразит его в окне документа в виде HTML-кода.

Да, Dreamweaver очень странно поддерживает серверные директивы. Будем надеяться, что в следующей его версии этот недостаток будет устранен. А пока что можем только посоветовать изучать язык HTML и править код таких вот разделенных на части страниц вручную.

На этом рассказ о серверных директивах окончен.

Что дальше?

На этом мы закончим разговор о Web-дизайне и начнем говорить о Web - программировании. Удивлены? Скажете, что мы вроде бы уже говорили о программировании в Интернете в главе 13? Да, говорили.

Те программы, которые мы писали ранее, работали на стороне клиента, под управлением Web-обозревателя и виртуальной машины. Но знаете ли вы, что можно писать программы, которые будут работать на стороне Web - сервера? Эти программы будут принимать от посетителя сайта какие-либо данные, обрабатывать их и выдавать результат в виде сформированной самой программой Web-страницы.

Заинтригованы? Тогда читайте дальше.

Серверные директивы

Macromedia Dreamweaver MX

Заключение

"А напоследок я скажу..." — поется в старинном русском романсе. Что же мне сказать напоследок?.. Книга о Dreamweaver закончена. Я рассказал об этой программе все, что знал и что мог …

Страницы общего доступа

Страницы общего доступа предназначены для обычных посетителей сайта. Как правило, они создаются после административных страниц; в этом слу­чае вы можете использовать последние как образцы для создания "обычных" страниц. В самом …

Реализация выхода с сайта

Осталось реализовать выход с сайта — и работу над административными страницами можно считать законченной. Как вы помните, каждый посети­тель, вошедший на сайт с разграничением доступа, должен по окончании работы с …

Как с нами связаться:

Украина:
г.Александрия
тел./факс +38 05235  77193 Бухгалтерия

+38 050 457 13 30 — Рашид - продажи новинок
e-mail: msd@msd.com.ua
Схема проезда к производственному офису:
Схема проезда к МСД

Партнеры МСД

Контакты для заказов оборудования:

Внимание! На этом сайте большинство материалов - техническая литература в помощь предпринимателю. Так же большинство производственного оборудования сегодня не актуально. Уточнить можно по почте: Эл. почта: msd@msd.com.ua

+38 050 512 1194 Александр
- телефон для консультаций и заказов спец.оборудования, дробилок, уловителей, дражираторов, гереторных насосов и инженерных решений.