为什么CKEditor的嵌套小部件在我的Drupal构建中不起作用?

时间:2015-07-14 11:10:52

标签: javascript drupal-7 ckeditor ckeditor4.x

我很高兴地看到现在可以使用CKE 4.4+来嵌套小部件。我通读了this question并试了一下 - 太棒了。奇怪的是,它不能与我的Drupal站点一起使用CKEditor模块。

所以,我得到了什么:

该模块使用CDN,提供CKE 4.5.1(//cdn.ckeditor.com/4.5.1/full-all)。
我设置了一个模块来提供simplebox插件(取自工作dev repo示例):

function mymodule_ckeditor_plugin() {
  $plugins = array();
  $plugins['simplebox'] = array(
    'name' => 'simplebox',
    'desc' => t('simplebox Plugin'),
    'path' => drupal_get_path('module', 'mymodule') . '/plugins/simplebox/',
    'buttons' => array(
      'Simplebox' => array('label' => 'Simplebox', 'icon' => 'icons/simplebox.png'),
    )
  );
  return $plugins;
}

它为我提供了激活插件:

enter image description here enter image description here

我的工具栏上有插件按钮: enter image description here

单击它,将创建标记。但奇怪的是,添加另一个嵌套在里面的东西是不可能的:

enter image description here

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:2)

我不太确定你从哪里获得Simplebox插件。我假设您是从官方"Creating a Simple CKEditor Widget (Part 2)"指南下载的。

如果是这样,我得告诉你,附加到指南的插件和ckeditor-dev存储库中plugins/widget/dev/assets/simplebox/plugin.js中的插件之间存在细微差别。

后者是最新版本,可在content嵌套可编辑的内容中启用任何类型的丰富HTML:

editor.widgets.add( 'simplebox', {
    ...
    editables: {
        ...
        content: {
            selector: '.simplebox-content'
        }
    }   
} );

虽然旧的限制非常严格:

editor.widgets.add( 'simplebox', {
    ...
    editables: {
        ...
        content: {
            selector: '.simplebox-content',
            allowedContent: 'p br ul ol li strong em'
        }
    }   
} );

请参阅API docs以了解有关嵌套可编辑的定义的更多信息。在CKEditor中对Advanced Content Filter的介绍也应该有用。

解决方案:从GitHub存储库复制simplebox plugin并享受嵌套小部件,拖放等等。或者只是从allowedContent移除content限制嵌套可编辑。

对于给您带来的不便表示遗憾,我们正在尽最大努力使我们的文档保持最新,但这是一项如此庞大的任务,有时我们无法赶上;)