SilverStripe TInyMCE配置需要刷新才能生效

时间:2015-06-09 03:22:42

标签: php tinymce silverstripe

我们在SilverStripe中构建了我们自己的tinyMCE编辑器版本。唯一的问题是您需要点击刷新我们要加载的自定义配置。一旦刷新一次,它就会在剩下的时间内完成。

我们的设置如下:

BolierplateWYSIWYG.php

class BolierplateWYSIWYG extends Extension {

    protected function defaults() {
        $defaultEditorConfig = HtmlEditorConfig::get('cms');
        $defaultEditorConfig->setOptions(
            array(
                'theme'                        => 'advanced',
                'priority'                     => 1,
                // More config options
            )
        );

        return HtmlEditorConfig::get('cms');
    }

    public function getConfig() {
        return $this->defaults();
    }
}

然后,在Page.php内部我们有以下内容:

... page functions ...

public function getCMSFields() {

    $fields = parent::getCMSFields();

    // Update WYSIWYG
    $digital360Wysiwyg = new Digital360WYSIWYG;
    $digital360Wysiwyg->getConfig();

    ... Page CMS configuration ...

在我们的boilplate.yml里面,我们有:

HtmlEditorField:
  extensions:
    - BolierplateWYSIWYG

如何在不需要页面刷新的情况下加载此新配置?

3 个答案:

答案 0 :(得分:1)

就像@assertchris提到的那样,我的PR [{3}}现已合并,因此您可以轻松拥有多个TinyMCE配置,这些配置可以帮助您进行扩展。

HTMLEditorConfig中设置您的_config.php

HtmlEditorConfig::get('default')->setOptions....
HtmlEditorConfig::get('fancy')->setOptions....

由于你必须有一个扩展名,你可能会有:

class BolierplateWYSIWYG extends Extension {
  public function setEditorConfig($name = 'default')
  {
    HtmlEditorConfig::set_active($name);
  }
}

设置CMS字段时可以这样使用

$digital360Wysiwyg = new Digital360WYSIWYG;
$digital360Wysiwyg->setEditorConfig();

$digital360Wysiwyg = new Digital360WYSIWYG;
$digital360Wysiwyg->setEditorConfig('fancy');

这应该可以正常工作。虽然在更改mode等某些编辑器选项时要小心,因为这会导致刷新问题。你不应该改变themepriority吗?

答案 1 :(得分:0)

答案 2 :(得分:0)

您可以通过调用_mysite / config.php 中的setOptions来自定义HtmlEditorConfig::get('cms')->setOptions( array( 'theme' => 'advanced', 'priority' => 1, // More config options ) );

gem uninstall mysql2

无需刷新CMS页面即可使用。