CKEditor + CKFinder在PHP环境下的使用

好久没有写文章了,最近在写后台,使用的是yii2的框架,业务需要在后台发新闻类的文章,一开始选择富文本直接用了百度的那个,后来因为上传的图片大小固定的,然后就换了,找到了CKEditor。

CKEditor官网:https://ckeditor.com
参考配置网址:https://www.cnblogs.com/wuling129/p/8268440.html

由于研究富文本的,应该有一定的配置经验,本文就略去了把CKEditor整合成yii2的一个部件的部分,其实对CKEditor的安装、配置难度来自对CKFinder的整合,配置。其余的按照官方标准文档,一步一步即可。

1、对CKEditor的配置

我下载的是最新版本(2018-9-28)
下载的是满包版本

首先配置config.js
配置.png

废话不多说,直接上代码

/**
 * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see https://ckeditor.com/legal/ckeditor-oss-license
 */

var baseUrl = '../../';

CKEDITOR.editorConfig = function (config) {
    // Define changes to default configuration here. For example:
    config.language = 'zh-cn';


    //编辑器样式
    config.skin = "moono-lisa";
    config.filebrowserUploadUrl = baseUrl + 'uploads/';
    // config.uiColor = '#AADC6E';
    //工具栏是否可以被收缩
    config.toolbarCanCollapse = true;

    config.toolbar = [
        ['Source', '-', 'Save', 'NewPage', 'Preview', 'Print', '-', 'Templates'],
        //剪切    复制     粘贴      粘贴纯文本
        ['Cut', 'Copy', 'Paste', 'PasteText'],
        // 数字列表          实体列表            减小缩进     增大缩进          查找     替换
        ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Find', 'Replace'],
        //超链接  取消超链接 锚点
        ['Link', 'Unlink', 'Anchor'],
        //图片     表格       水平线             表情          特殊字符           分页符
        ['Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', '-', 'PageBreak'], '/',
        //加粗     斜体,     下划线      穿过线      下标字        上标字
        ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript'],
        //左对 齐             居中对齐          右对齐          两端对齐
        ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
        // 样式       格式      字体    字体大小
        ['Styles', 'Format', 'Font', 'FontSize'],
        //文本颜色     背景颜色
        ['TextColor', 'BGColor'],
        //全屏           显示区块
        ['Maximize', 'ShowBlocks', '-']
    ];

    // config.toolbar_Full = [
    //     ['Source','-','Save','NewPage','Preview','-','Templates'],
    //     ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
    //     ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
    //     ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
    //     '/',
    //     ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
    //     ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
    //     ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
    //     ['Link','Unlink','Anchor'],
    //     ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
    //     '/',
    //     ['Styles','Format','Font','FontSize'],
    //     ['TextColor','BGColor']
    // ];

    //字体编辑时的字符集 可以添加常用的中文字符:宋体、楷体、黑体等 plugins/font/plugin.js
    //config.font_names = 'Arial;Times New Roman;Verdana';

    // “拖拽以改变尺寸”功能 plugins/resize/plugin.js
    config.resize_enabled = true;
    //图片预览文字
    config.image_previewText = ' ';
    //是否强制复制来的内容去除格式 plugins/pastetext/plugin.js
    config.forcePasteAsPlainText = true;

    // Remove some buttons provided by the standard plugins, which are
    // not needed in the Standard(s) toolbar.
    //移除toolbar上的某个按钮
    //config.removeButtons = 'Underline,Subscript,Superscript';

    // Set the most common block elements.
    config.format_tags = 'p;h1;h2;h3;pre';

    // Simplify the dialog windows.
    //移除窗口上的选项
    config.removeDialogTabs = 'image:advanced;link:advanced';

    //自定义配置
    //config.配置项 = 值
    //config.width = 100%;
    config.height = 600;
    //config.uiColor = "#cc0041";

    // //文件的上传管理:加载CKfinder  注意文件路径为网站根目录 使用时,注意ckfinder文件安装路径
    config.filebrowserBrowseUrl = baseUrl + 'finder/ckfinder.html';
    config.filebrowserImageBrowseUrl = baseUrl + 'finder/ckfinder.html?Type=Images';
    config.filebrowserFlashBrowseUrl = baseUrl + 'finder/ckfinder.html?Type=Flash';
    config.filebrowserUploadUrl = baseUrl + 'finder/core/connector/php/connector.php?command=QuickUpload&type=Files';
    config.filebrowserImageUploadUrl = baseUrl + 'finder/core/connector/php/connector.php?command=QuickUpload&type=Images';
    config.filebrowserFlashUploadUrl = baseUrl + 'finder/core/connector/php/connector.php?command=QuickUpload&type=Flash';


};

说明:第一个是toolbar的配置,下面注释掉的是全按键的,给大家参考,当然也有一种是分组的配置,个人觉得那种自定义程度不高。'-'是在toolbar中添加一条竖线,'/'是换行。
第二个需要注意的的,有的教程要上传图片,是去改源码,把某个hidden:!0改成false,我觉得改源码不太友好,所以没有改,其实配置好config.filebrowserUploadUrl这项它就会出来

配置好config.filebrowserUploadUrl就出来了

因为懒得写上传方法,所以config.filebrowserUploadUrl这个配置项也没啥用,因为我是用CKFinder来统一管理上传的文件,有更强大的工具,就不重复造轮子了
CKEditor的config.js配置重点就在:

 //文件的上传管理:加载CKfinder  注意文件路径为网站根目录使用时,注意ckfinder文件安装路径
    config.filebrowserBrowseUrl = baseUrl + 'finder/ckfinder.html';
    config.filebrowserImageBrowseUrl = baseUrl + 'finder/ckfinder.html?Type=Images';
    config.filebrowserFlashBrowseUrl = baseUrl + 'finder/ckfinder.html?Type=Flash';
    config.filebrowserUploadUrl = baseUrl + 'finder/core/connector/php/connector.php?command=QuickUpload&type=Files';
    config.filebrowserImageUploadUrl = baseUrl + 'finder/core/connector/php/connector.php?command=QuickUpload&type=Images';
    config.filebrowserFlashUploadUrl = baseUrl + 'finder/core/connector/php/connector.php?command=QuickUpload&type=Flash';

这里就是下载的CKFinder的路径,位置自定义随便放,应该可以放到不同的服务器上,这个我就没有再测试了。
在这里,配置也就over嘞。
有个小提示:预览框本来带有默认文字的,配置项中配置config.image_previewText = ' ';即可消除,注意,我这里配置为一个空格,不是空字符。当然,也可以自定义文字

预览框中的文字

2、CKFinder配置
我使用的是下载的最新版本(2018-9-28) 版本:3.4.4
对的配置主要文件是:
ff.png

其实对config.js都不多,我就配置了一个语言

 config.language = 'zh-cn';

对config.php配置
参考网址:(官网)https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_authentication

//导入权限认证的文件
require_once 'User.php';
...
/*============================ Enable PHP Connector HERE ==============================*/
// https://docs.ckeditor.com/ckfinder/ckfinder3-php/configuration.html#configuration_options_authentication
//身份验证信息,在这里,可以将原来的false直接改成ture即可访问
//这里我是新建了一个User.php来进行身份确认
$config['authentication'] = array($user,'isLoggedIn');
...
//许可配置,不配置许可,会有一个提示,功能不全,授权是比较贵的
$config['licenseName'] = '';
$config['licenseKey']  = '';
...
//这里是路径配置,两项配合使用
$config['privateDir'] = array(
    'backend' => 'default',
    'tags'   => '.finder/tags',
    'logs'   => '.finder/logs',
    'cache'  => '.finder/cache',
    'thumbs' => '.finder/cache/thumbs',
);

$config['backends'][] = array(
    'name'         => 'default',
    'adapter'      => 'local',
    'baseUrl'      => '/uploads/',
//  'root'         => '', // Can be used to explicitly set the CKFinder user files directory.
    'chmodFiles'   => 0777,
    'chmodFolders' => 0755,
    'filesystemEncoding' => 'UTF-8',
);
...

除了上述配置,其他的我就是默认的了。
这里给大家推荐一个激活码网站,可以直接生成授权密钥,实现全功能使用,当然,自己动手去研究密钥算法也是可以的
破解:https://putong.la/ckfinder3.html
然后是user.php

<?php
/**
* Created by PhpStorm.
* User: H
* Date: 2018/9/28
* Time: 9:42
*/

namespace finder;

class User
{
  private $authenticated = false;

  /**
   * 从你的网站应用中获取登陆状态
   * 在这里实现,返回一个布尔值,true表示可以访问
   */
  function login()
  {
      $this->authenticated =true;
  }

  function logout()
  {
      $this->authenticated = false;
  }

  public function isLoggedIn()
  {
      return $this->authenticated;
  }
}

/**
* 直接在这里实例化user对象,
* 调用判断逻辑
*/
$user = new User();
$user->login();

基本上完成上述配置,你的文件服务器就可以正常使用了,可以自定义增加上传的配置项,具体参考image的配置格式

$config['resourceTypes'][] = array(
    'name'              => 'Images',
    'directory'         => 'images',
    'maxSize'           => 0,
    'allowedExtensions' => 'bmp,gif,jpeg,jpg,png',
    'deniedExtensions'  => '',
    'backend'           => 'default'
);

这个配置会在你的文件服务器上的侧栏添加
配置侧栏

到这里就全部结束啦

我想改变它弹出的方式,官网有一个是弹出一个模态框的,不是重新弹出一个浏览器框。有会的大佬,烦劳提点

如有错误,还请指正,欢迎探讨

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,941评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,397评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,345评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,851评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,868评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,688评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,414评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,319评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,775评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,945评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,096评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,789评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,437评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,993评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,107评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,308评论 3 372
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,037评论 2 355

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,167评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,730评论 2 59
  • public static ArrayListgetKeyValue(String JsonString){Arr...
    _夏兮阅读 1,791评论 0 0
  • 这个周末在家里呆着看书、读小说,偶尔累了才出去逛逛,或陪女儿玩。可能是缺乏运动,看手机时间太长,蹲下猛地站起...
    探索未知阅读 153评论 0 0
  • 我与K相识快又20年了。那天天气就如乡间公路陈年的沥青一样阴沉,空气中一股只有阴干雨鞋铺于阳光下才会发出的...
    雷少一阅读 334评论 0 4