В тему: Создаем
расширение для DW MX
Процессор Dreamweaver разработан, чтобы
быть расширяемым. Он включает в себя интерпретатор
JavaScript, — таким образом, DW
может читать и выполнять сценарии JavaScript;
также он предоставляет набор API*
расширения; каждый из этих API является
набором функций на языке JavaScript или
C, дают разработчикам расширений возможность
добавлять свои возможности в Dreamweaver.
Dreamweaver также предоставляет Объектную
модель документа (Document Object Model,
DOM), которая позволяет расширениям исследовать
и модифицировать структуру документа и
ее содержание.
Используя API расширения, вы можете создавать
целый ряд расширений для Dreamweaver,
включая объекты, команды, панели инструментов
(toolbars), Инспекторы свойств (Property
inspectors), Сценарии поведения (behavior
actions), сценарии поведения сервера (server
behaviors), источники данных (data sources),
модели сервера (server models), и переводчики
данных (data translators), кроме всего
прочего.
Вы можете создавать новые объекты и простые
команды, ничего не зная о программировании;
См. "Создание
простого объекта" и Справку к
Dreamweaver. Но для добавления к DW более
продвинутых возможностей нужно писать
выражения на JavaScript или C. Информацию
об API и DOM ищите в справке "Расширение
Dreamweaver" (Help > Extending Dreamweaver).
После создания расширения для Dreamweaver,
если хотите, чтобы другие пользователи
Dreamweaver смогли использовать его, вы
можете упаковать его и распространить
через Macromedia Exchange. См. Help >
Creating and Submitting Extensions, или
посетите сайт Macromedia
Exchange для Dreamweaver.
JavaScript — это интерпретируемый
язык программирования. Больше узнать о
JavaScript, можно из хороших книг: "JavaScript
Bible" от Danny Goodman (IDG) или
"JavaScript: The Definitive Guide"
от David Flanagan (O’Reilly). Информацию
об использовании JavaScript для расширения
Dreamweaver ищите в "Расширение Dreamweaver"
(Help > Extending Dreamweaver).
Примечание:
Несмотря на сходство названий, язык JavaScript
никак не связан с Java.
Все команды в меню Dreamweaver, включая
создаваемые вами и записанные с помощью
панели History (см. Справку Dreamweaver),
реализованы на языке JavaScript. Этот
JavaScript-код обычно состоит по большей
части из вызовов функций, предоставляемых
API расширения Dreamweaver. Если вы знаете
JavaScript и понимаете API расширения
Dreamweaver, вы можете редактировать JavaScript,
чтобы изменить функционирование команд
Dreamweaver.
Примечание: Не пытайтесь
изменить код JavaScript, если вы не знаете
точно, что вы делаете. А когда знаете,
все равно делайте резервные копии файлов
сценариев, прежде чем изменять их.
Чтобы переименовать команду, переместить
ее в другое меню или добавить для нее
клавиатурное сокращение ("шорткат"),
см. "О
настройке меню Dreamweaver".
Серверные технологии, такие как ASP,
ColdFusion, JSP, и PHP, используют особый
не-HTML код HTML-файлах; серверы создают
и обрабатывают HTML-контент, базируясь
на этом коде. Когда Dreamweaver встречает
не-HTML тэги, он сравнивает их с информацией
в своих файлах, описывающих тэги "от
третьих лиц", а эти файлы определяют,
как Dreamweaver читает и отображают не-HTML
тэги.
Например, ASP-файл содержит — вдобавок
к обычному HTML-коду — ASP-код, интерпретируемый
сервером. ASP-код код выглядит почти как
тэг HTML, но он отмечен парой разделителей:
начинается с <% и заканчивается
%>. Папка Configuration/ThirdPartyTags
содержит файл Tags.xml, который
описывает форматы разнообразных "тэгов
от независимых производителей", включая
ASP код, и определяет, как Dreamweaver
отображает такой код. Так как отношение
к ASP-коду задано в Tags.xml,
Dreamweaver не пытается интерпретировать
что-либо между разделителями <%
и %>; вместо этого он
просто отображает иконку для обозначения
ASP-кода в окне документа (в Design view).
Вы можете создать свои собственные файлы
с данными о тэгах, а в этих файлах задать,
как Dreamweaver будет и отображать ваши
тэги. Создавайте базу данных о новых тэгах
для каждого набора тэгов.
Примечание: Этот раздел
объясняет, как определить способы отображения
заданных вами тэгов в Dreamweaver, но
этот раздел не описывает, как предоставлять
способы для редактирования содержания
или свойств таких тэгов. Информацию о
том, как создать Инспектор Свойств (Property
inspector) для просмотра и модификации
свойств заданного вами тэга, см. в "Расширение
Dreamweaver" (Help > Extending Dreamweaver).
Каждый файл базы данных тэгов определяет
имя, тип, модель содержания, схему отображения
и иконку для одного или более "заказных"
тэгов. Вы можете создавать любое количество
файлов данных о тэгах, но все они должны
размещаться в папке Configuration/ThirdPartyTags,
чтобы Dreamweaver читал и обрабатывал
их. Файлы с базой данных о тэгах должны
иметь расширение ".xml".
Совет:
Если вы работаете над несколькими разными
несвязанными сайтами одновременно (например,
вы — свободный freelancer), вы можете
поместить все тэговые спецификации для
определенного сайта в одном файле. Затем
просто передайте файл базы данных с необходимыми
иконками и Инспекторами свойств, и передайте
их людям, которые будут поддерживать сайт.
Вы определяете тэговую спецификацию с
помощью XML-тэга tagspec.
Например, следующий код описывает спецификацию
для тэга, называемого happy:
<tagspec tag_name="happy"
tag_type="nonempty" render_contents="false"
content_model="marker_model"
icon="happy.gif" icon_width="18"
icon_height="18"></tagspec>
Используя tagspec, вы можете
определить два разных вида тэгов: нормальные
тэги в стиле HTML и тэги, со строками
в виде ограничителей (string-delimited).
Последние начинаются одной строкой и заканчиваются
другой строкой; они похожи на пустые HTML-тэги
(такие как img), которые
не обрамляют собой какое-либо содержание
и не имеют закрывающего тэга. Тэг happy,
показанный выше — это нормальный
тэг в стиле HTML; он начинается с открывающего
тэга <happy>, содержит
данные между открывающим и закрывающим
тэгами, и заканчивается закрывающим тэгом
</happy>. (Если тэг
ограничен строками, его тэговая спецификация
должна включать атрибуты start_string
и end_string.) ASP-тэг является
тэгом, ограниченным строками; он начинается
строкой <% и заканчивается
строкой %>, и не имеет
закрывающего тэга.
Ниже описаны атрибуты и допустимые значения
тэга tagspec. Необязательными
являются атрибуты, взятые в фигурные скобки
({}) (все остальные атрибуты
обязательны); атрибуты, помеченные звездочкой
(*), игнорируются для тэгов
с ограничителями-строками.
Описание
Предоставляет информацию о тэгах "от
третьих лиц".
Атрибуты
tag_name, {tag_type}, {render_contents},
{content_model},
{start_string}, {end_string}, {detect_in_attribute},
{parse_attributes}, icon, icon_width,
icon_height,
{equivalent_tag}, {is_visual}, {server_model}
tag_name
Название тэга. Для тэгов, ограниченных
строками, tag_name используется
только для определения, может ли быть
использован для тэга назначенный инспектор
свойств. Если первая строка инспектора
свойств содержит имя этого тэга, с двух
сторон окруженное звездочками (*), то
инспектор может быть использован для тэгов
этого типа. Например, название тэга для
ASP-кода — ASP; инспектор
свойств, который может обрабатывать ASP-код
должен в первой строке включать строку
*ASP*. Информацию об API
инспектора свойств см. в "Расширение
Dreamweaver" (Help > Extending
Dreamweaver).
tag_type*
Определяет, будет ли тэг пустым (как <img>),
или будет содержать что-то между своим
открывающим и закрывающим тэгами (как
<code>). Этот атрибут
необходим для нормальных (не ограниченных
строками) тэгов. Для ограниченных строками
тэгов он игнорируется, так как они всегда
пустые. Допустимые значения — "empty"
и "nonempty".
render_contents*
Определяет, будет ли содержимое тэга отображаться
в виде Дизайна (Design view) в окне Документа,
или вместо этого будет отображаться заданная
иконка. Этот атрибут необходим для непустых
тэгов и игнорируется для пустых (у пустых
тэгов нет содержания.) Этот атрибут применяется
только к тэгам, которые появляются вне
атрибутов; содержимое тэгов, которые появляются
внутри значений атрибутов других тэгов,
не отображается. Допустимые значения —
"true" и "false".
content_model*
Описывает, какой тип контента может содержать
тэг, и в каком месте HTML он может появляться.
Допустимые значения — "block_model",
"head_model", "marker_model",
и "script_model":
-
block_model говорит,
что тэг может содержать блочные элементы
типа div или p,
и что тэг может появляться только в
разделе body или внутри
другого блочного ("телосодержащего",
"body-content") тэга типа
div, layer,
или td.
-
head_model определяет
тэг, который может содержать текст,
и может появляться только в разделе
head.
-
marker_model говорит,
что тэг может содержать любой допустимый
HTML-код, и что он может появиться в
любом месте HTML-файла. Валидатор HTML
в Dreamweaver игнорирует тэги, заданные
как marker_model. Но валидатор
не игнорирует содержимое этих тэгов;
так что даже если сам тэг может быть
в любом месте, содержимое этого тэга
может быть идентифицировано как недопустимый
код HTML в определенных местах. Например,
простой текст не может быть употреблен
в разделе head документа,
так что вы не можете поместить содержащий
текст marker_model-тэг
в разделе head. (Чтобы
поместить созданный вами и содержащий
простой текст тэг в раздел head,
задайте для этого тэга атрибут content_model
как head_model, а не marker_model.)
Используйте marker_model
для тэгов, которые отображаются как
строчные (внутри элементов блочного
уровня, таких, как p или
div, — например, внутри
параграфа). Если тэг должен сам отображаться
как параграф, со строчными отступами
до и после него, не используйте эту
модель.
-
script_model позволяет
тэгу существовать в любом месте между
открывающим и закрывающим HTML-тэгами
документа. Когда DW обнаруживает тэги
этой модели, он полностью игнорирует
их содержимое. Они пригодятся для разметки
(как некоторые тэги ColdFusion), которую
Dreamweaver не должен обрабатывать.
start_string
Определяет ограничитель, который помечает
начало тэга, ограниченного строкой. Такой
тэг может появляться в любом месте документа,
где присутствует комментарий. Dreamweaver
не обрабатывает содержимое между start_string
и end_string. Этот атрибут
необходим, если задан атрибут end_string.
end_string
Задает ограничитель, который помечает
конец тэга, ограниченного строкой. Этот
атрибут необходим, если задан атрибут
start_string.
detect_in_attribute
Показывает, нужно ли игнорировать
все, что есть между строками start_string
и end_string (или между открывающим
и закрывающим тэгами, если эти строки
не определены), даже если эти строки появляются
в имени или значении атрибута. Обычно
вы должны установить значение "true"
для тэгов, ограниченных строками; по умолчанию
значение равно "false".
Например, ASP-тэги иногда встречаются
в значениях атрибутов, и иногда содержат
кавычки ("); так как
спецификация тэга ASP задает
detect_in_attribute="true",
Dreamweaver игнорирует ASP-тэги, включая
внутренние кавычки, когда они встречаются
в значениях атрибутов.
parse_attributes*
Показывает, нужно ли обрабатывать атрибуты
тэга. Если этот атрибут установлен в "true"
(значение по умолчанию), Dreamweaver обрабатывает
атрибуты; если значение равно "false",
Dreamweaver игнорирует все до следующей
закрывающей угловой скобки (>),
встретившейся вне кавычек. Например, этот
атрибут должен быть равен "false"
для тэга типа cfif (как в
<cfif a is 1>, который
Dreamweaver не может обработать как набор
пар атрибут/значение).
icon
Задает путь к иконке, включая имя файла,
которая ассоциирована с тэгом. Этот атрибут
необходим для пустых тэгов, и для тех
непустых, содержимое которых не отображается
в виде Дизайна окна Документа.
icon_width
Задает ширину иконки в пикселях.
icon_height
Высота иконки в пикселях.
equivalent_tag
Задает простой HTML-эквивалент
для определенных тэгов ColdFusion, относящихся
к формам. Этот атрибут не предназначен
для использования с другими тэгами.
is_visual
Показывает, производит ли тэг
прямое визуальное воздействие на страницу,
или нет. Например, ColdFusion тэг cfgraph
не определяет значение для is_visual
(так как значение по умолчанию —
"true"); ColdFusion
тэг cfset задан как имеющий
для is_visual значение "false".
Видимость тэгов серверной разметки контролируется
категорией Невидимые Элементы (Invisible
Elements) диалогового окна Настроек (Preferences,
меню Edit > Preferences); видимость
для визуальных тэгов серверной разметки
может быть установлена независимо от видимости
для невизуальных тэгов серверной разметки.
server_model
Если задан, показывает, что тэг tagspec
применяется только к страницам, принадлежащим
определенной модели сервера. Если server_model
не задан, тэг tagspec применяется
ко всем страницам. Например, ограничитель
для ASP и JSP тэгов одинаковый, но тэг
tagspec для JSP задает server_model
как "JSP", так
что когда Dreamweaver обнаруживает код
с соответствующим ограничителем на JSP-странице,
он отображает иконку JSP. Когда он находит
такой же код на не-JSP странице, он показывает
иконку ASP.
Содержимое
Нет (Пустой тэг).
Контейнер
Нет.
Пример
<tagspec tag_name="happy"
tag_type="nonempty" render_contents="false"
content_model="marker_model"
icon="happy.gif" icon_width="18"
icon_height="18"></tagspec>
Отображение заказных тэгов в виде Дизайна
в окне Документа, зависит от значений
атрибутов tag_type и render_contents
тэга tagspec (см. "Настройка
интерпретации тэгов "от третьих лиц".)
Если значение tag_type равно
"empty", отображается
иконка, заданная в атрибуте icon.
Если значение tag_type равно
"nonempty", но
значение render_contents
равно "false",
иконка отображается, как для пустого тэга.
Например, все экземпляры тэга happy,
определенного ранее в этом разделе, могут
появиться в HTML приблизительно так:
<p>Этот абзац
содержит экземпляр тэга <code>happy</code>
(<happy>Буяка</happy>).</p>
Этот абзац отобразится в Design view
вот так:
Этот абзац содержит экземпляр тэга happy
(
).
Заметьте, так как render_contents
равно "false" в
спецификации тэга, содержимое тэга happy
(слово "Буяка") не отображается;
вместо открывающего и закрывающего тэгов
и их содержимого отображается просто одна
иконка.
Иконка в Design view не появляется для
непустых тэгов, имеющих значение render_contents
равное "true";
вместо этого отображается содержимое между
открывающим и закрывающим тэгами (как
отображается текст между тэгами в <mytag>
Это содержимое между открывающим и закрывающим
тэгом </mytag>). Если включен
пункт View > Invisible Elements, содержимое
подсвечивается цветом для тэгов "от
третьих лиц", этот цвет устанавливается
в настройках подсвечивания (Highlighting
preferences). (Заметьте, что подсвечивание
применяется только к тэгам, определенным
в тэговых спецификациях (файлах с БД о
тэгах.))
Чтобы изменить цвет подсветки
для тэгов "от третьих лиц":
- Выберите Edit > Preferences и
выберите категорию Highlighting.
- Кликните на цветном квадратике возле
надписи "Third-Party Tags, чтобы
отобразить окно выбора цвета.
- Выберите цвет и кликните OK, чтобы
закрыть окно Preferences. О выборе цвета
можно узнать в справке к Dreamweaver.
Dreamweaver исправляет определенные типы
ошибок в HTML-коде (детали см. в Справке
к Dreamweaver). По умолчанию, Dreamweaver
воздерживается от изменения HTML в файлах
с определенными расширениями, включая
.asp (ASP), .cfm (ColdFusion), .jsp (JSP)
и .php (PHP). По умолчанию установлено
так, что Dreamweaver не станет случайно
модифицировать код в любом таком не-HTML
тэге. Вы можете изменить установленное
по умолчанию поведение Dreamweaver при
переписывании кода так, что он будет переписывать
HTML при открытии таких файлов, и вы можете
добавить другие типы файлов в список типов,
которые Dreamweaver не должен переписывать.
Отметьте, что Dreamweaver кодирует некоторые
специальные символы (заменяя их числовыми
значениями), когда вы вводите их в Инспекторе
свойств. Обычно лучше всего позволить
DW выполнять такое кодирование, потому
что специальные символы желательно отображать
корректно на всех платформах и броузерах.
Тем не менее, поскольку такое кодирование
может мешать правильной работе тэгов "от
третьих лиц", вы можете захотеть
изменить поведение Dreamweaver относительно
перекодировки, когда работаете с файлами
содержащими тэги "от третьих лиц".
Чтобы позволить Dreamweaver переписывать
HTML в большинстве видов файлов:
- Выберите Edit > Preferences и
выберите категорию Code Rewriting.
- Выберите одну из следующих опций:
- Исправлять недопустимо вложенные
и незакрытые тэги;
- Удалять лишние закрывающие тэги;
- Проделайте одно из следующего:
- Удалите одно или более расширений
файлов из списка расширений для
"Never Rewrite Code: In Files
with Extensions".
- Отключите опцию "Never Rewrite
Code: In Files with Extensions".
(Отключение этой опции позволяет
Dreamweaver переписывать HTML во
всех типах файлов.)
Чтобы добавить типы файлов, которые Dreamweaver
не должен переписывать:
- Выберите Edit > Preferences и
выберите категорию Code Rewriting.
- Выберите одну из следующих опций:
- Исправлять недопустимо вложенные
и незакрытые тэги;
- Удалять лишние закрывающие тэги;
- Убедитесь, что включена опция "Never
Rewrite Code: In Files with Extensions",
и добавьте новые расширения файлов,
к списку в текстовом поле.
Если новый файл не появляется во всплывающем
меню типов файлов в диалоговом окне
File > Open, вы можете захотеть добавить
его к файлу Configuration/Extensions.txt.
См. "Изменение
типа файла по умолчанию".
Чтобы отключить перекодирование
символов в Dreamweaver:
- Выберите Edit > Preferences >
категория Code Rewriting.
- Отключите одну или две опции Special
Characters.
Информацию о других настройках переписывания
кода см. в cправке к Dreamweaver.
Вот такой вкусный продукт приготовила
Macromedia.
Приятного аппетита!
[новое окно]>