#xml #configuration #menu #dreamweaver
#xml #конфигурация #меню #dreamweaver
Вопрос:
Мне нужно создать элемент меню, который вставляет некоторую проприетарную разметку, например, маркер кода, например
<###LoginForm###>
как используется моей CMS.
Я нахожу это очень сложным — логически и согласно документации, я должен быть в состоянии сделать это путем редактирования menus.xml в конфигурации / Меню в папке Dreamweaver в Program Files. Но это работает не так, как ожидалось. Я попытался скопировать элемент, который вставляет тег HR, заменив мой «тег», но ничего не вставлено.
В configuration / objects / common есть файлы, на которые ссылаются в XML, которые, похоже, содержат вставляемые фрагменты кода, т. Е. HR.htm который выглядит так, как будто он должен вставляться <HR>
, но он вставляется <hr />
, когда фактический пункт меню используется в XHTML, так что они устарели?
Я бы очень хотел, чтобы кто-нибудь дал мне надежный рецепт для создания меню, которое позволило бы мне вставлять свои собственные фрагменты кода, подобные тегам, как указано выше.
Ответ №1:
Документация по созданию расширений / дополнений Dreamweaver может нуждаться в значительном улучшении. Возможно, вы читали, как добавить элемент меню, но, вероятно, там не сказано, что вы должны включить в значения атрибутов, чтобы делать именно то, что вы хотели. Попытка скопировать что-то еще — хорошая отправная точка, но может быть какая-то «магия» в том, как некоторые вещи действительно работают.
Если это фрагмент кода, почему бы не использовать панель фрагментов (Окно -> Фрагмент)? У вас даже есть возможность назначить сочетание клавиш отдельным фрагментам?
Что касается объектов (которые меню вставки и панель вставки используются для добавления кода на страницу), встроенные теги, такие как HR, вставляют совместимые с XHTML версии тега в документы с типом документа XHTML. Это разработано и является внутренним для Dreamweaver.
Если вы добавили следующий элемент меню в menus.xml над записью HR:
<menuitem id="DWMenu_Insert_LoginForm" name="LoginForm" enabled="(dw.getActiveWindow(true) != null amp;amp; dw.getActiveWindow(true).allowsEdits()) amp;amp; dw.getFocus() != 'browser' amp;amp; dw.getDocumentDOM() != null amp;amp; dw.getDocumentDOM().getParseMode() == 'html'" command="var dom = dw.getDocumentDOM(); var offsets = dom.source.getSelection(); dom.source.replaceRange(offsets[0], offsets[1], '<###LoginForm###>')" />
Примечание: я отошел от атрибута file и вместо этого использовал атрибут command, который позволяет запускать код JavaScript, в данном случае:
var dom = dw.getDocumentDOM(); var offsets = dom.source.getSelection(); dom.source.replaceRange(offsets[0], offsets[1], '<###LoginForm###>')
который получает ссылку на документ, находит смещения выделения в документе и заменяет выделение вашим фрагментом кода.
Я не тестировал это всеми возможными способами, но для меня это работает в простых документах HTML и XHTML.
Комментарии:
1. Это как раз то, что мне было нужно. Большое вам спасибо.