Silverstripe:如何在tinymce中允许javascript?

Silverstripe:如何在tinymce中允许javascript?,tinymce,silverstripe,Tinymce,Silverstripe,我的一个站点上的管理员和编辑希望在页面上嵌入一些javascript,比如twitter、facebook、instagram或其他东西。我认为在tinyMCE的html编辑器中设置扩展的\u valid\u元素以允许使用脚本标记是非常容易的,但它显然不起作用 我已将此添加到我的配置中 HtmlEditorConfig::get('cms')->setOption( 'extended_valid_elements', 'script[charset|defer|langu

我的一个站点上的管理员和编辑希望在页面上嵌入一些javascript,比如twitter、facebook、instagram或其他东西。我认为在tinyMCE的html编辑器中设置扩展的\u valid\u元素以允许使用脚本标记是非常容易的,但它显然不起作用

我已将此添加到我的配置中

HtmlEditorConfig::get('cms')->setOption(
    'extended_valid_elements',
    'script[charset|defer|language|src|type|async]'
);
我已经检查过它是否已传递给dom中的ssTinyMCEconfig变量

到目前为止还不错。但当我试图将一个简单的脚本发布到我的HTML编辑器中时,它会将其剥离。有人知道如何解决这个问题吗


谢谢大家!

我们可以向
$db
添加一个文本变量,而不是通过TinyMCE编辑器来管理自定义脚本,从而通过普通
文本区域字段来管理自定义脚本

以下代码适用于SilverStripe 3.4:

类页面扩展SiteTree{
私有静态$db=array(
“自定义脚本”=>“文本”
);
公共函数getCMSFields(){
$fields=parent::getCMSFields();
$fields->addFieldToTab('Root.CustomScript',
TextareaField::create('CustomScript','CustomScript')
->设置行(30)
->addExtraClass(“代码”)
->setAttribute('spellcheck','false');
返回$fields;
}
}
下面是CMS的一些自定义css,用于使脚本输入字段以单空格字体显示文本

mysite/css/cms.css

.field.code textarea{
最大宽度:100%;
字体系列:“Courier New”,Courier,monospace;
颜色:#000000;
背景:#ffffff;
}
我们使用
config.yml
文件中的以下代码在cms中启用自定义css:

mysite/_config/config.yml

LeftAndMain:
  extra_requirements_css:
    - 'mysite/css/cms.css'
SiteConfig:
  extensions:
     - CustomSiteConfig
在head标记中的
Page.ss
模板中,或者在body标记的底部,或者我们是否想要自定义脚本中,我们放置以下内容来加载自定义脚本:

<% if $CustomScript %>
    $CustomScript.RAW
<% end_if %>
<% if $SiteConfig.CustomScript %>
    $SiteConfig.CustomScript.RAW
<% end_if %>
我们在
config.yml
文件中启用此
SiteConfig
扩展名:

mysite/_config/config.yml

LeftAndMain:
  extra_requirements_css:
    - 'mysite/css/cms.css'
SiteConfig:
  extensions:
     - CustomSiteConfig
在head标签中的
Page.ss
模板中,或在body标签的底部,我们放置以下内容以加载站点范围的自定义脚本:

<% if $CustomScript %>
    $CustomScript.RAW
<% end_if %>
<% if $SiteConfig.CustomScript %>
    $SiteConfig.CustomScript.RAW
<% end_if %>

$SiteConfig.CustomScript.RAW

我只需在标题中包含相关的脚本链接,就可以绕过Twitter嵌入的问题。这嵌入了我粘贴到Timmce中的twitter推特
blockquote
代码。

嗨,谢谢你的回答。最后,我做了类似的事情,只是将它与Requirements类一起注入。不过,该网站的管理员认为,做一些简单的事情很难。我认为这可能是因为他们习惯于通过TinyMCE包含javascript,但我认为这个解决方案已经足够了:-)是的,这是一个快速解决方案,但它有点违背了让管理员自己注入javascript的目的:-)无论如何,谢谢你的建议。