Silverstripe:如何在tinymce中允许javascript?

时间:2015-02-12 11:54:52

标签: tinymce silverstripe

我的某个网站上的管理员和编辑希望在网页上添加一些javascript嵌入,例如twitter,facebook,Instagram或其他任何内容。我认为设置extended_valid_elements以在tinyMCE的html编辑器中允许脚本标记真的很容易,但它显然不起作用。

我已将此添加到我的配置

HtmlEditorConfig::get('cms')->setOption(
    'extended_valid_elements',
    'script[charset|defer|language|src|type|async]'
);

我已经检查过它是否已经传递到我的dom中的ssTinyMCEconfig变量。

到目前为止一切顺利。但是当我尝试将一个简单的脚本发布到我的HTML编辑器中时,它会将其删除。有谁知道如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:3)

我们可以通过简单的$dbTextareaField添加一个文本变量来管理自定义脚本,而不是通过TinyMCE编辑器管理自定义脚本。

以下代码适用于SilverStripe 3.4:

class Page extends SiteTree {

    private static $db = array(
        'CustomScript' => 'Text'
    );

    public function getCMSFields() {

        $fields = parent::getCMSFields();

        $fields->addFieldToTab('Root.CustomScript', 
            TextareaField::create('CustomScript', 'Custom Script')
                ->setRows(30)
                ->addExtraClass('code')
                ->setAttribute('spellcheck', 'false'));

        return $fields;
    }
}

这是CMS的一些自定义css,使脚本输入字段显示带有等宽字体的文本。

<强> mysite的/ CSS / cms.css

.field.code textarea {
    max-width: 100%;
    font-family: "Courier New", Courier, monospace;
    color: #000000;
    background: #ffffff;
}

我们在config.yml文件中使用以下代码在cms中启用自定义css:

<强> mysite的/ _config / config.yml

LeftAndMain:
  extra_requirements_css:
    - 'mysite/css/cms.css'

在head标记中的Page.ss模板中,或在body标记的底部,或者我们是否需要自定义脚本,我们将以下内容加载自定义脚本:

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

如果我们需要网站范围的自定义脚本,我们也可以通过扩展SiteConfig来将此字段添加到“设置”标签中:

<强> mysite的/代码/扩展/ CustomSiteConfig.php

class CustomSiteConfig extends DataExtension {

    private static $db = array(
        'CustomScript' => 'Text'
    );

    public function updateCMSFields(FieldList $fields) {

        $fields->addFieldToTab('Root.CustomScript',
            TextareaField::create('CustomScript', 'Custom Script')
                ->setRows(30)
                ->addExtraClass('code')
                ->setAttribute('spellcheck', 'false'));
    }
}

我们在SiteConfig文件中启用此config.yml扩展程序:

<强> mysite的/ _config / config.yml

SiteConfig:
  extensions:
     - CustomSiteConfig

在head标记的Page.ss模板中,或在body标记的底部,我们将以下内容加载到网站范围的自定义脚本中:

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

答案 1 :(得分:1)

我能够通过简单地在我的标题中包含相关的脚本链接来解决Twitter嵌入的问题。这嵌入了我粘贴到TimyMCE中的twitter-tweet blockquote代码。