【问题标题】:inserting images into multiple tinyMCE editors in wordpress将图像插入到 wordpress 中的多个 tinyMCE 编辑器中
【发布时间】:2010-09-28 05:25:36
【问题描述】:

我正在使用一个名为“CMS”的 wordpress 插件,它是一个让 wordpress 更像 CMS 的插件。 http://plugins.trendwerk.nl 特别是它向模板添加了多个文本“块”,每个都可以在 post.php 脚本中使用多个 tinymce 编辑器进行编辑。

我遇到的问题是您只能将图像放入主编辑器或默认编辑器,根据 CMS 的作者,唯一的解决方法是将图像放入主内容编辑器并将其拖到相关编辑器中。据说不可能将图像放入其中一个块编辑器中。

这并不总是有效,由于某种原因,它在从一个编辑器拖放到另一个编辑器时使用相对链接,这会破坏网站。

我想做的是添加将图像插入单个 tinyMCE 编辑框的功能。 当图像被插入时,它被插入到 activeEditor 中。但活动编辑器总是显示为主编辑器。

当创建页面时,任何带有 theEditor 类的文本区域都将转换为 tinyMCE 编辑器,人们会假设单击编辑器会将该编辑器设置为活动编辑器,但事实并非如此。或者单击“添加图像”图标将其停用(失去焦点)。

有谁知道我可以如何设置 activeEditor?也许当用户单击“添加图像”图标时,我可以更新活动编辑器。

【问题讨论】:

    标签: wordpress tinymce


    【解决方案1】:

    Wordpress 确实改变了编辑器,遗憾的是它在包含图标的工具栏中的 onclick 事件中。事件从 a 标记冒泡并调用以下 javascript:

    if (typeof tinyMCE != "undefined" && tinyMCE.activeEditor) {
          tinyMCE.get("content").focus();
          tinyMCE.activeEditor.windowManager.bookmark = tinyMCE.activeEditor.selection.getBookmark("simple")
    }
    

    如您所见,编辑器“内容”被硬编码到其中。 然后它会进一步冒泡到另一个脚本,该脚本打开我需要保留此事件的媒体 iframe,因此我无法捕获并取消该事件。

    为了解决问题,我将上面的内容更改为if (typeof tinyMCE != "undefined" && tinyMCE.activeEditor),这意味着如果尚未设置编辑器,则将其更改为硬编码值。

    然后在我自己的图标 onclick 方法中,我将编辑器更改为我选择的一个。

    遗憾的是,这意味着我必须更改 wordpress 核心文件,但在插件中没有简单的方法可以做到这一点。它当然可以完成,但需要复制 wordpress 事件。不知道这是好事还是坏事。

    我会将我所做的事情传递给插件的作者,如果他愿意,他可以对他的插件进行更改。

    直流

    【讨论】:

      【解决方案2】:

      所有编辑器实例(对象)都可以使用

      找到
      tinymce.editors; // array containing all editor objects
      

      例如,您可以将 activeEditor 设置为第一个编辑器,但您可以选择任何其他编辑器对象

      tinymce.activeEditor = tinymce.editors[0];
      

      我建议你使用 Firebugconsole.log(tinymce.editors); 来仔细看看。

      当页面创建时任何文本区域 使用 theEditor 类转换 对于 tinyMCE 编辑器,人们会假设 然后单击编辑器将设置 该编辑器到活动编辑器,它 似乎没有。或者或者 单击“添加图像”图标 停用它(失去焦点)。

      单击编辑器通常会使该编辑器成为活动编辑器。我认为你是对的,“添加图像”按钮以某种方式改变了 activeEditor。这是什么类型的按钮 - 它是 tinymce UI 按钮还是来自 wordpress 的按钮?

      【讨论】:

      • 是的,我找到了编辑器收藏。尽管 wordpress 似乎在某些时候改变了它。当我在单击带有 onClick 事件的链接时手动更改它时,它被改回了。我还没有找到它在哪里改变。我在 DOM 更改事件上设置了一个中断,但萤火虫似乎有自己的错误。中断从未触发。它似乎停止显示更改。
      • 我不认为 wordpress 会改变它,在这种情况下,它可能是 tinymce 核心中的一个事件
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多