前言:
FCKeidtor是个国外的多语言编辑器,你可以对其配置文件进行简单修改使之支持目前常用Web开发语言的应用,下面我就讲讲FCKeditor的最新版本2.4.2在php的具体配置过程,有不足和出错的地方,欢迎指正。
精简:
正因为这个编辑器是支持多语言的,所以首先我们针对使用对其做相应的冗余文件删除。
1、临时文件及文件夹删除:从根目录下开始删除一切以“_”开头的文件及文件夹,因为他们为临时文件和文件夹。删除这类临时文件及文件夹之后,我们还要删除一些根目录下的多余文件,根目录下我们只保留fckconfig.js(配置文件)、fckeditor.js(js方式调用文件)、fckeditor.php(php方式调用文件,新版本通过该文件统一调用php4或者php5的调用文件,fckeditor_php4.php/fckeditor_php5.php你可以根据自己服务器使用的情况删减,建议都保留)、fckeditor_php4.php(php4的调用文件)、fckeditor_php5.php(php5的调用文件)、fckstyles.xml(样式)、fcktemplates.xml(模板)文件和editor文件夹。
2、editor/lang目录:存放的是多语言配置文件,因为我们只可能用到en和zh-cn(简体中文)所以,根据我的选择,我删掉其他的语言配置文件。
3、editor/skins界面目录:默认带有三个界面(default:默认界面,加载速度相对较快;office2003:相对pp的界面,不过速度确实要慢些;silver:银白色界面,加载速度也相对较快),可以自行决定是否删除其中一两个。
4、editor/filemanager/browser/default/connectors目录:存放编辑器所支持的Web动态语言,我们以php为例所以保留php目录,test.html文件可以帮助你查看某语言下的上传设置等(具体上传设置我将在后面的配置作较为详细讲解),可以自行决定是否删除。
5、editor/filemanager/upload目录:同理。
到此精简完成,你会发现整个编辑器确实“瘦身”不少,呵呵
基本配置:
下面我开始对编辑器进行简单配置(并非每步都必须,可根据自己的需要参考修改):
1、默认语言
打开fckconfig.js文件(注意此文件是utf-8编码哦),找到FCKConfig.AutoDetectLanguage = true ;(第56行)此句作用为自动检测语言,默认为true,即表示编辑器会根据系统语言自动检测加载相应的语言,我们将其改为false,不让其检测,然后将FCKConfig.DefaultLanguage = 'en';(编辑器默认语言,第57行)改为简体中文"zh-cn"。
2、字体列表
依然打开fckconfig.js,因为此编辑器为外国人编写,所以默认不提供中文字体,我们为其加入,找到FCKConfig.FontNames(第142行)加入“宋体;楷体_GB2312;新宋体;黑体;隶书;幼圆;”其他字体可根据自己需要自行加入。
3、文件上传
FCKeditor的文件管理程序在editor/filemanager/文件夹下,分为浏览(browser)和上传(upload)两种。“浏览”是指浏览服务器已存在文件并可以选择,也可以上传本地文件至服务器;上传是指快速上传,在窗口中点“上传”选项,选择本地文件后上传就行,但是不能查看服务器上已有上传文件,相对而言不太方便,只是操作更为快捷。也就是说FCKeditor中有一个文件浏览,有两个文件上传,而这些设置是分散在多个文件中,配置相对复杂,下面我大致讲一下:
在FCKeditor中共有三个文件跟上传功能有关,一个是js文件,两个是php文件,前者关闭后界面中不出现相关窗口或按钮,后者关闭后相关功能不可用。
js文件即是指的fckconfig.js文件,在以前旧版本的fckconfig.js中首先你必需开启如下几项:
浏览上传功能:
FCKConfig.LinkBrowser = true ; //文件
FCKConfig.ImageBrowser = true ; //图片
FCKConfig.FlashBrowser = true ; //Flash
快速上传功能:
FCKConfig.LinkUpload = true ; //同上
FCKConfig.ImageUpload = true ; //同上
FCKConfig.FlashUpload = true ; //同上
即把这几项设为true,而我们今天使用的2.4.2的fckconfig.js中默认已经是开启上传开关显示功能的,所以,如果你要将该编辑器作为前台使用(fckeditor上传漏洞问题一直没有得到较好的改善),考虑到安全性你可能需要关闭文件上传功能,那么你只需要将这几项设置为false即可(当然两个php文件你也不要开启上传功能哦)。
如果你要使用文件上传功能,那么我们继续配置:
依然在fckconfig.js文件中,fckeditor对语言默认支持的是asp,找到以下两句,进行相应修改:
var _FileBrowserLanguage = 'asp' ; // asp | aspx | cfm | lasso | perl | php | py(第182行)
var _QuickUploadLanguage = 'asp' ; // asp | aspx | cfm | lasso | php(第183行)
我们将其均改为'php':
var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py(第182行)
var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | php
在2.4.2版本中,我们发现增加了对更多文件后缀名的支持,这个应该是为了解决上传漏洞所作的些许改动,不过作用不大。
*.AllowedExtensions:(其中*号代表:FCKConfig.LinkUpload、FCKConfig.ImageUpload等)表示允许上传的文件后缀名,为空表示允许所有文件,你可根据自己需要设置上传文件后缀名,一定程度增加安全性,设置的格式可以参考它已有的后缀名设置。
*.DeniedExtensions:同上,表示禁止上传的文件后缀名。
注:你设置了允许上传的,当然禁止的也就不必要设置了,本人推荐设置允许的,毕竟禁止的后缀名列表不能罗列完全,可能还有很多我们不曾想到的后缀名。
对js文件的配置到此已经完成,下面我们进行两个php文件在上传方面的设置:
文件浏览上传修改:
打开editor/filemanager/browser/default/connectors/php/config.php文件,找到:
$Config['Enabled'] = false ;(第28行)将false改为true,即允许上传。
$Config['UserFilesPath'] = '/userfiles/' ;(第32行)为定义上传目录,可根据自己情况进行修改,我将其改为upload目录。
注:注意FCKeditor是不支持虚拟目录的,你的所有路径都是针对网站根目录的绝对路径。
文件快速上传修改:
打开文件editor/filemanager/upload/php/config.php文件,找到
$Config['Enabled'] = false ;(第28行)将false改为true。
$Config['UserFilesPath'] = '/UserFiles/' ;(第35行)同“文件浏览上传”的上传目录。
$Config['UseFileType'] = false ; (第32行)改为true,不然上传文件不会放在上传目录中
在该文件中,还有一项:
$Config['UserFilesAbsolutePath'] = '' ;(第41行)
这项的作用是设定上传的绝对路径,比如,你想指定上传文件到D:/Web/upload/下,你可以指定它的值为你的绝对路径,注意,如果你指定了该值,那你也要对$Config['UserFilesPath'] = '/UserFiles/' ;作相同的设置。
到此上传基本配置已经完成,整个编辑器最基本的配置也已经结束了,你可以通过下列代码对其进行调用测试了:
[php]include("/fckeditor/fckeditor.php"); // 包含fckeditor类,fckeditor目录放在网站根目录下
$BasePath = "/fckeditor/"; // 编辑器路径
$oFCKeditor = new FCKeditor('jayliao'); // 创建一个fckeditor对象,表单的名称为jayliao
$oFCKeditor->BasePath = $BasePath;
$oFCKeditor->Value = 'test'; // 设置表单初始值
// 还可设置以下部分(“=”包含部分),并非必须:
//==================================================================================//
$oFCKeditor->Width = '100%'; // 编辑器宽度,类中有默认值,如果不想修改可不管此项
$oFCKeditor->Height= '300'; // 同width,此处为高$oFCKeditor->ToolbarSet
$oFCKeditor->ToolbarSet = 'JayLiao'; // 默认编辑器工具栏有Basic(基本工具)和Default(所有工具)两种选择,JayLiao为本人自定义的工具条,如有需要可参考后文中的说明新建或修改工具条
$oFCKeditor->Config['SkinPath'] = '/fckeditor/editor/skins/office2003/'; // 设置编辑器皮肤
//==================================================================================//
$oFCKeditor->Create(); // 调用类中方法,必须
?>[/php]
赶紧测试一下吧,是不是很激动,终于可以看到这个强大的编辑器了。不过,马上你会发现在上传以中文命名的文件时会出现乱码,这到底是怎么回事呢?呵呵,不怕,下面我们就对其进行简单修改问题很快就解决的:
我们为上传文件以时间+随机数作为其新名字,打开:editor/filemanager/upload/php/upload.php,找到:
[php]$sFileName = $oFile['name'] ;[/php]
替换为:
[php]$sFileName = $oFile['name'] ;
$sOriginalFileName = $sFileName ;
$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
$sExtension = strtolower( $sExtension ) ;
$sFileName = date("YmdHis").rand(100, 200).".".$sExtension;[/php]
哈哈,你会发现“快速上传”的乱码已经解决,就这么简单,高兴之余不要忘了,同样,还需要修改“浏览”的上传,修改文件:editor/filemanager/browser/default/connectors/php/commands.php,修改内容同上。
另:你上传的中文文件不做以上命名修改可能在服务器上并非乱码,如果你只是为了在浏览的时候让编辑器正确显示该类文件名,那你可以作如下修改,打开:editor/filemanager/browser/default/connectors/php/util.php,修改ConvertToXmlAttribute函数,将:
return utf8_encode( htmlspecialchars( $value ) ) ;
修改为:
return iconv( "GBK", "UTF-8", htmlspecialchars($value) ) ;
这样,你的编辑器应该已经能正确显示中文名,不过强烈建议你修改上传文件的命名,中文名可能存在诸多不便。
当完成以上设置后,fckeditor已经能满足我们的日常使用需要,不过我们却又发现一个问题,那就是上传后的文件我们却无法删除,这样会使网站上的垃圾文件(主要是图片)日益增多,那我们是否能够通过对编辑器的修改能较为方便的管理删除无用上传文件呢?我们不难想到fckeditor的浏览文件功能,对该功能进行适当的扩展,对日常所上传的文件进行管理就变得相当简单易行了,那我们赶紧动手吧:
增加该功能我们修改的页面为:fckeditor/editor/filemanager/browser/default/frmresourceslist.html
第一步,在页面的body区域增加如下代码:
说明:第一对
的作用是当我们把鼠标移动到所上传的文件上时显示其相关信息;标签的作用是供我们删除上传文件时做动作响应窗口的,即是将我们的删除动作在iframe中运行,目的是实现伪无刷新删除效果;最后一对的作用是显示上传文件及文件夹的列表(2.4较以前版本对标签中内容作了调整,老版该页面以第二步,在文件的js代码区中加入:
复制代码 代码如下:
// add by jayliaoscu @ 2007-04-23 /*{{{{*/
// 显示文件显示层
function showDiv( fileUrl )
{
var name = fileUrl;
//获取文件类型
var suffix = name.substring(name.lastIndexOf(".")+1);
var div= document.getElementById("showFile");
div.content = "";
div.style.position = "absolute";
div.content += "
| ||
该类型不能预览 |
div.innerHTML = div.content;
div.style.display = "";
div.style.top = event.y+document.body.scrollTop+10;
div.style.left = event.x+document.body.scrollLeft+30;
}
// 隐藏文件显示层
function hiddenDiv()
{
var div= document.getElementById("showFile");
div.style.display ="none";
}
// 在iframe中删除文件
function delFile( fileUrl )
{
if(!confirm('你确定删除该文件?'))
return;
var url = '/fckeditor/del_file.php?filePath='+ fileUrl;
window.open(url, "iframe_del");
Refresh();
}
///*}}}*/
第三步,修改本页面原有js
修改:
复制代码 代码如下:
oListManager.Clear = function()
{
document.body.innerHTML = '' ;
}
为:
复制代码 代码如下:
oListManager.Clear = function()
{
hiddenDiv();
document.getElementById("body_content").innerHTML = '' ; // body_content为我们在body区域增加的div标签
}
找到:
复制代码 代码如下:
var sLink = '' ;
修改为:
复制代码 代码如下:
var sLink = '' ; // 即是文件信息显示功能
修改:
复制代码 代码如下:
function Refresh()
{
LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
}
为:
复制代码 代码如下:
function Refresh()
{
hiddenDiv(); // 所作修改,为了刷新列表时默认隐藏文件显示层
LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
}
修改函数:GetFoldersAndFilesCallBack,找到:
复制代码 代码如下:
document.body.innerHTML = oHtml.ToString() ;
修改为:
复制代码 代码如下:
document.getElementById("body_content").innerHTML = oHtml.ToString() ;
最后,增加一个文件删除页面del_file.php(该文件路径和增加的js函数delFile(fileUrl)中的调用一致),作用为删除文件,给出成功与否的操作提示,参考代码:
复制代码 代码如下:
[php]$filePath = "..".trim($_GET['filePath']);
if ( $filePath )
{
@unlink($filePath);
echo "<script>alert('删除成功。');</script>";
}
else
{
echo "<script>alert('删除错误,可能文件不存在或者已经删除。');</script>";
}
?>[/php]
至此,我对于fckeditor的修改基本完成,当然这些修改只是对fckeditor修改使用的抛砖引玉,给大家一个参考,希望对初学者有所帮助。后面对编辑器的修改过程比较匆忙,并未修改一步完成一步文档书写,所以,难免有所出错,望见谅,如果你有什么问题和错误发现欢迎联系我互相讨论,共同进步。
另附:
配置文件(fckconfig.js)中主要配置项目如下,根据自己看情况配置:
1.FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称
2.FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件
3.FCKConfig.BaseHref = ''; // 相对链接的基地址
4.FCKConfig.Debug = true/false; // 是否开启调试功能,当调用FCKDebug.Output()时,会在调试窗中输出内容
5.FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/'; // 设置皮肤
6.FCKConfig.AutoDetectLanguage = true/false ; // 是否自动检测语言
7.FCKConfig.DefaultLanguage = 'zh-cn' ; // 设置默认语言
8.FCKConfig.ContentLangDirection = 'ltr/rtr'; // 默认文字方向,ltr左,rtr右
9.FCKConfig.FillEmptyBlocks = true/false ; // 使用这个功能,可以将空的块级元素用空格来替代
10.FCKConfig.FormatSource = true/false; // 切换到代码视图时,是否自动格式化代码
11.FCKConfig.FormatOutput = true/false; // 当输出内容时是否自动格式化代码
12.FCKConfig.FormatIndentator = ""; // 当在“源码格式”下缩进代码使用的字符
13.FCKConfig.GeckoUseSPAN = true/false; // 是否允许SPAN标记代替B,I,U标记
14.FCKConfig.StartupFocus = true/false; // 开启时是否FOCUS到编辑器
15.FCKConfig.ForcePasteAsPlainText = true/false;// 强制粘贴为纯文本
16.FCKConfig.ForceSimpleAmpersand = true/false; // 是否不把&符号转换为XML实体
17.FCKConfig.TabSpaces = 0/1; // TAB是否有效
18.FCKConfig.TabSpaces = 4; // TAB键产生的空格字符数
19.FCKConfig.ShowBorders = true/false; // 是否合并边框
20.FCKConfig.ToolbarStartExpanded = true/false; // 页面载入时,工具栏是否展开,点“展开工具栏”时才出现
21.FCKConfig.ToolBarCanCollapse = true/false; // 是否允许展开折叠工具栏
22.FCKConfig.ToolbarSets = object ; // 编辑器的工具栏,可以自行定义,删减,可参考已存在工具栏
23.FCKConfig.EnterMode = 'p'; // 编辑器中直接回车,在代码中生成,可选为p | div | br
24.FCKConfig.ShiftEnterMode = 'br'; // 编辑器中Shift+回车,在代码中生成,可选为p | div | br
25.FCKConfig.ContextMenu = 字符串数组; // 右键菜单的内容
26.FCKConfig.FontColors = ""; // 文字颜色列表
27.FCKConfig.FontNames = ""; // 字体列表
28.FCKConfig.FontSizes = ""; // 字号列表
29.FCKConfig.FontFormats = ""; // 文字格式列表
30.FCKConfig.StylesXmlPath = ""; // CSS样式列表的XML文件的位置
31.FCKConfig.TemplatesXmlPath = ""; // 模版的XML文件位置
32.FCKConfig.SpellChecker = "ieSpell/Spellerpages"; // 拼写检查器
33.FCKConfig.IeSpellDownloadUrl = ""; // 下载拼写检查器的网址
34.FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/'; // 表情文件存放路径
35.FCKConfig.SmileyImages = ''; // 表情文件名称列表,具体参考默认设置
36.FCKConfig.SmileyColumns = 8; // 表情窗口显示表情列数
37.FCKConfig.SmileyWindowWidth = 320; // 表情窗口显示宽度,此窗口会因为表情文件的改变而作调整
38.FCKConfig.SmileyWindowHeight = 240; // 表情窗口显示高度,此窗口会因为表情文件的改变而作调整
39.FCKConfig.FullPage = true/false; // 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容

1.处理器在选择电脑配置时,处理器是至关重要的组件之一。对于玩CS这样的游戏来说,处理器的性能直接影响游戏的流畅度和反应速度。推荐选择IntelCorei5或i7系列的处理器,因为它们具有强大的多核处理能力和高频率,可以轻松应对CS的高要求。2.显卡显卡是游戏性能的重要因素之一。对于射击游戏如CS而言,显卡的性能直接影响游戏画面的清晰度和流畅度。建议选择NVIDIAGeForceGTX系列或AMDRadeonRX系列的显卡,它们具备出色的图形处理能力和高帧率输出,能够提供更好的游戏体验3.内存电

Django框架是一种用于Web应用程序的Python框架,它提供了一个简单而强大的方式来创建Web应用程序。事实上,Django已经成为当前最受欢迎的PythonWeb开发框架之一,也成为很多公司的首选,包括Instagram和Pinterest。本文将深入探讨Django框架是什么,包括基础概念和重要组件,以及具体代码示例。Django基础概念Djan

作为一个流行的PHP框架,Laravel提供了许多便捷的请求方法来处理不同类型的HTTP请求。其中,Head请求方法是一个比较特殊且常被忽视的方法。在本文中,我们将深入探讨Laravel中Head请求方法的作用、用法和示例代码。什么是Head请求方法?Head请求方法是HTTP协议中定义的一种请求方法,在发送Head请求时,服务器将仅返回请求头信息,而不会返

Go语言是一门由Google开发的编程语言,具有高效、简洁、并发性强等特点。它在语法结构、包管理、高级特性等方面都有很大的优势,因此备受程序员青睐。然而,在实际开发中,很多项目会涉及到与传统的编程语言C进行交互,因此Go语言与C语言的兼容性就显得尤为重要。首先,我们来谈谈Go语言与C语言的兼容性。在Go语言中,可以通过CGo将Go语言与C语言进行交互。CGo

Go语言作为一种现代化的编程语言,以其简洁高效的特性在近年来受到越来越多开发者的喜爱和青睐。其中一个让人独特的地方就是其单线程特性。在传统的多线程编程语言中,开发者通常需要手动管理线程之间的同步和互斥,而在Go语言中,借助其独特的协程(Goroutine)和通信机制(channel),可以方便且高效地实现并发编程。一、Goroutine与单线程:Go语言中的

Golang是一种由谷歌开发的编程语言,其出色的性能和并发特性使其在各种领域中得到了广泛的应用,包括网络编程、大数据处理等。然而,对于一些需要直接操作硬件的领域,比如驱动程序开发,人们可能会开始思考:Golang是否适合用于编写驱动程序呢?本文将深入探讨这个问题,并通过具体的代码示例来展示Golang在驱动程序开发中的应用。首先,让我们来了解一下什么是驱动程

Golang的本质是脚本语言还是编译语言?探讨Golang,也被称为Go语言,是一种由Google开发的静态类型编程语言。自诞生以来,Golang一直备受开发者关注,其优秀的并发性能、简洁的语法和跨平台特性使其在各个领域得到广泛应用。然而,关于Golang到底是脚本语言还是编译语言,却一直存在着争议。脚本语言和编译语言在运行时的不同方式给人们留下了深刻的印象

Linux操作系统作为一种常用的开源操作系统,具有强大的可定制性和灵活性。在使用Linux系统时,我们经常会遇到各种特殊字符的处理。这些特殊字符在命令行中具有特殊的含义,能够实现很多高级功能。本文将深入探讨Linux中常见的特殊字符,并结合具体的代码示例来详细介绍它们的用法。通配符:通配符是用来匹配文件名的特殊字符,常见的通配符包括*、?、[]等。下面是几种


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3汉化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版