我需要创建一个插入一些专有标记的菜单项,例如像
这样的代码标记<###LoginForm###>
我的 CMS 使用的。
我发现这非常困难 - 从逻辑上讲,根据文档,我应该能够通过在 Program Files 的 Dreamweaver 文件夹中的配置/菜单中编辑 menus.xml 来完成此操作。但这并没有按预期工作。我尝试复制插入 HR 标签的项目,替换我的“标签”,但没有插入任何内容。
在configuration/objects/common中有一些文件,在XML中引用,这些文件似乎包含可插入的代码块,即有一个HR.htm,看起来应该插入
<HR>
,但当实际菜单时它会插入<hr />
item 用于 XHTML,那么它们已经过时了吗?
我非常希望有人给我一个万无一失的方法来创建一个菜单,该菜单允许我插入我自己的类似标签的代码片段,如上所述。
创建 Dreamweaver 扩展/插件的文档需要大量改进。您可能阅读了如何添加菜单项,但它可能没有说明您应该在属性值中包含什么内容才能完全执行您想要的操作。尝试复制其他东西是一个很好的起点,但有些东西的实际工作方式可能存在一些“魔力”。
如果这是一段代码,为什么不使用“代码片段”面板(“窗口”->“代码片段”)?您甚至可以选择为各个片段分配键盘快捷键?
对于对象(插入菜单和插入栏用于向页面添加代码),内置标签(例如 HR)将标签的 XHTML 兼容版本插入到具有 XHTML 文档类型的文档中。这是设计使然,是 Dreamweaver 的内部设计。
如果您将以下菜单项添加到 HR 条目上方的 menus.xml 中:
<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 文档中对我有用。
我在尝试不同的事情时也遇到了问题:添加另一个菜单选项来插入已经包含可访问性属性 role="presentation" 的表,因为我编写电子邮件代码。尽管我通过复制现有代码来插入表,然后替换 ids 并使用我想要的修改引用所涉及文件的版本(Table.htm 和 TableCommands.htm),在 menus.xml 中创建了一个新块,但它从未出现在 DW 的菜单上。我查找了对插入表选项 id 的调用,但在搜索中出现的 menus.xml 中唯一的其他位置现在有新条目的 id,但仍然没有发生任何事情。所以,我只能认为菜单的另一个组件需要更新,但我不知道涉及什么文件。