Как создать пользовательские элементы меню вставки в dreamweaver?

#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. Это как раз то, что мне было нужно. Большое вам спасибо.