Как создать пользовательские пункты меню "Вставка" в Dreamweaver?
Мне нужно создать пункт меню, который вставляет некоторую запатентованную разметку, например, маркер кода, например
<###LoginForm###>
как используется моей CMS.
Я нахожу это очень сложно - логично, и согласно документации, я должен быть в состоянии сделать это, отредактировав menus.xml в папке configuration/Menus в папке Dreamweaver в Program Files. Но это не работает, как ожидалось. Я попытался скопировать элемент, который вставляет тег HR, заменяя мой "тег", но ничего не вставлено.
В файле config /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 && dw.getActiveWindow(true).allowsEdits()) && dw.getFocus() != 'browser' && dw.getDocumentDOM() != null && dw.getDocumentDOM().getParseMode() == 'html'" command="var dom = dw.getDocumentDOM(); var offsets = dom.source.getSelection(); dom.source.replaceRange(offsets[0], offsets[1], '<###LoginForm###>')" />
Примечание: я отошел от атрибута файла и вместо этого использовал атрибут команды, который позволяет запускать код JavaScript, в данном случае:
var dom = dw.getDocumentDOM(); var offsets = dom.source.getSelection(); dom.source.replaceRange(offsets[0], offsets[1], '<###LoginForm###>')
который получает ссылку на документ, находит смещения выделения в документе и заменяет выделение фрагментом кода.
Я не проверял это всеми возможными способами, но работает для меня в простых документах HTML и XHTML.