FCKeditor使用方法

  對於一個全新的網站,FCKeditor就可以直接拿過來用了,不需要進行什麼修改。但是對於絕大多數的已有網站而言,FCKeditor的一些設置並不適合自己的使用,這篇文章旨在告訴你簡單的修改FCKeditor以方便您的網站的使用。

  第一項工作就是對這個功能宏大的編輯器進行精簡,當然是文件精簡而非功能精簡化。在這裏我以asp版的FCKeditor爲例進行,進入到FCKeditor 2.0文件夾下,先把以“_”爲開頭的文件夾統統刪除,這些文件夾裏放的是範例或是一些其它工具。其實也就是隻保留editor文件夾、fckconfig.js、fckeditor.asp、fckeditor.js、fckstyles.xml、fcktemplates.xml就可以了,最外層的精簡化完畢,進入到editor文件夾內,先把“_source”文件夾刪除,這裏是一些源文件,對於使用來說沒什麼用處。

  進入images文件夾,刪除smiley文件夾,些文件是放表情圖標的,由於接下來我會用我自己的表情圖標,先把他們的刪除,當然,如果你想用這裏的表情圖標那就不要刪掉了。退出 images再進入lang文件夾內,這裏的東西可以來個大清洗了,只保留fcklanguagemanager.js、zh-cn.js、en.js、zh.js這四個文件,第一個文件是語言配置文件,有了它才能和fckconfig.js裏的設置成對對應上相應的語言文件,zh-cn.js是簡體中文語言包,en.js就不用說了吧,zh.js是繁體中文的。怎麼樣?一下子少了幾百K,爽吧~

  再退出lang文件夾,進入skin文件夾,如果你想使用fckeditor默認的這種奶黃色,那就把除了default文件夾外的另兩個文件夾直接刪除,如果想用別的,那就自己考慮了,不過我給你個建議,如果不想用默認的,那就選那個silver,因爲銀色也就是灰色和任何顏色配起來都不會難看,而那個office2003的皮膚,反正我是非常不喜歡的,並且圖片相對也比較大,又增加了下載時間,不要!

  精簡的最後一步,退出skin文件夾,再進入filemanager,如果你用的不是最新版的fckeditor的話,那這裏就一個文件夾browser,新版的還有一個upload文件夾。一個個來,先進入到filemanager/browser/default/connectors/下,因爲我是用的asp的,所以除asp文件夾外,全部刪除。然後再進入filemanager/upload/下,同樣,只留asp文件夾,至此,編輯器的精簡化已經結束了,接下來,我們對編輯器進行設置修改。

 

--------------------------------------------------------------------------------

  第一個修改的文件,也就是fckeditor總配置文件,位於根目錄下的fckconfig.js文件。請根據下面的列表進行(以fckeditor 2.0版的爲準):

找到第20行 FCKConfig.DefaultLanguage   = 'en' ;改爲 FCKConfig.DefaultLanguage   = 'zh-cn' ;設置默認語言爲簡體中文找到第40行 FCKConfig.TabSpaces   = 0 ; 改爲FCKConfig.TabSpaces   = 1 ; 即在編輯器域內可以使用Tab鍵。

如果你的編輯器還用在網站前臺的話,比如說用於留言本或是日記回覆時,那就不得不考慮安全了,在前臺千萬不要使用Default的toolbar,要麼自定義一下功能,要麼就用系統已經定義好的Basic,也就是基本的toolbar,找到第64行 FCKConfig.ToolbarSets["Basic"] = [ ['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-','Smiley','SpecialChar','Replace','Preview'] ] ; 這是我改過的Basic,把圖像功能去掉,把添加鏈接功能去掉,因爲圖像和鏈接和flash和圖像按鈕添加功能都能讓前臺頁直接訪問和上傳文件,要是這兒不改直接給你上傳個木馬還不馬上玩完?但是光這樣還不行,fckeditor還支持編輯域內的鼠標右鍵功能。找到第73行 FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField',/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ; 這也是我改過的把鼠標右鍵的“鏈接、圖像,FLASH,圖像按鈕”功能都去掉。

  找到 第77行 FCKConfig.FontNames   = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ; 加上幾種我們常用的字體 FCKConfig.FontNames   = '宋體;黑體;隸書;楷體_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

  接下來就設置上傳功能了,還是以ASP爲例,其實fck默認的就是asp的,把100行以下的所有被註釋掉的代碼全部刪掉就行,然後再把下面所有有關於browser.html和upload.asp的後面的?Type=XX都改成Type=YY,其中YY爲你想保存文件的文件夾名稱。

  而如果你還想用自己的表情圖標的話,那跳到131行,改掉那個表情圖標的文件夾地址,以及下面的表情圖標的文件名,再下面那三個數字是每行顯示錶情數及彈出窗口的寬和高了,這個的大小要根據您的表情圖標排列的窗口的大小而定了。OK,總配置文件修改結束。

--------------------------------------------------------------------------------

  接下來是編輯器位置的設置,我的習慣是把editor放在根目錄下,最開始所述的五個文件也放在根目錄下(Tips:建議放在根目錄下,並且建議使用時設置路徑也採用絕對路徑,如"/fckeditor/",而我的習慣的設置是"/"),這樣有利於fckeditor的更新升級,並且網站下所有文件夾都可以任意調用,不存在其它文件夾名變了而其它地方就無法使用編輯器的問題。

  打開fckeditor.asp文件,找到   sBasePath   = "/fckeditor/"改爲   sBasePath   = "/" 打開fckeditor.js文件,找到   this.BasePath   = '/fckeditor/' ;改爲   this.BasePath   = '/' ;

  編輯器域內默認的顯示字體爲12px,而我的主頁默認字體爲14px,所以看着就很不舒服,想要修改可以通過修改樣式表來達到要求,打開/editor/css/fck_editorarea.css,把第4行改爲   font-size: 14px;即可。

  接下來就是上傳文件的設置了,這個比較麻煩,請仔細操作。

  打開/editor/filemanager/browser/default/frmresourcetype.html,找到第15行,插入“ ['uploadfile','uploadfile'],”配合上剛纔在fckconfig.js裏的設置,那麼我的上傳文件路徑就是/uploadfile,當然你也可以改成你想要的文件夾,但這裏的名稱一定要和fckconfig.js裏的那個“Type=YY”裏的YY一致才行。

  還沒完,繼續進入到editor/filemanager/browser/default/connectors/asp,打開config.asp,先把ConfigIsEnabled = False改成爲ConfigIsEnabled = True,要不是沒法上傳文件的,再把ConfigUserFilesPath = "/UserFile"改成我想要的ConfigUserFilesPath = "/"。接着在“Set ConfigDeniedExtensions = CreateObject( "Scripting.Dictionary" )”後面加入ConfigAllowedExtensions.Add "uploadfile", "" ConfigDeniedExtensions.Add "uploadfile", "" 同理,這裏的設置也是要和上面以及fckconfig.js裏面對應的。

  還有一個上傳,就是快速上傳,這個功能是在fckeditor 2.0裏纔有的,以前的版本沒這個功能。進入/editor/filemanager/upload/asp,同樣打開config.asp,也同樣的把ConfigIsEnabled = False 設置成 ConfigIsEnabled = True,我這裏把ConfigUserFilesPath = "/UserFiles/"改成我想要的 ConfigUserFilesPath = "/uploadfile/"& Year(Date()) &"-"& Month(Date()) &"/",因爲我的上傳文件是放在uploadfile文件夾下,並且是按月分開放置的。快速上傳,不會讓你選擇文件夾,而是通過這裏的設置直接上傳的,這兒設置如果和前面的設置配合不好的話,你的文件就會被上傳得亂七八糟,很不方便管理。接前重複前一個config.asp裏的操作,在後面加上 ConfigAllowedExtensions.Add "uploadfile", "" ConfigDeniedExtensions.Add "uploadfile", ""

--------------------------------------------------------------------------------

  接下來呢,就講一下如何創建自己的在線編輯器,這裏以ASP和JS版的爲例,ASP版示例代碼,一般用於後臺操作:

<% Dim oFCKeditor Set oFCKeditor = New FCKeditor oFCKeditor.BasePath = "/"

oFCKeditor.ToolbarSet = "Default" oFCKeditor.Width = "100%" oFCKeditor.Height = "400"

oFCKeditor.Value = rs("logbody") oFCKeditor.Create "logbody" %>

ASP版的,當然只能用在以.asp爲擴展名的頁面中,如果你在前在fckedito.asp裏設置過BasePath爲"/"的話,這裏就可以省掉第三行,ASP版的只有一個Create函數。建議在修改一篇內容時用ASP版的。

接下來看JS版的:

<script type="text/javascript"> var oFCKeditor = new FCKeditor( 'logbody' ) ; oFCKeditor.BasePath = '/' ; oFCKeditor.ToolbarSet = 'Basic' ; oFCKeditor.Width = '100%' ; oFCKeditor.Height = '400' ; oFCKeditor.Value = '' ; oFCKeditor.Create() ; </script>

  BasePath的設置同上所述,JS版的可用於任何網頁中,甚至用於html頁面,因爲其是客戶端生成的,這樣的好處就是一可以減小網絡流量,因爲編輯器文件只需下載一次,二是可以由客戶端定義什麼時候顯示,由於fckeditor初始化需要一定時間,在這一點上JS就很有作用了。

另外,JS版的還有一個功能函數就是ReplaceTextarea()函數,可以替換指定的TextArea,拿我的網站的日誌的回覆部分示例:

      <script type="text/javascript">       <!--       function showFCK(){       var oFCKeditor = new FCKeditor( 'fbContent' ) ;       oFCKeditor.BasePath = '/' ;       oFCKeditor.ToolbarSet = 'Basic' ;       oFCKeditor.Width = '100%' ;       oFCKeditor.Height = '200' ;       oFCKeditor.Value = '' ;       //oFCKeditor.Create() ;       oFCKeditor.ReplaceTextarea() ;       //document.blog_feedback.blogsubmit.disabled = '';       document.blog_feedback.blogsubmit.style.display = '';       document.blog_feedback.openFCK.disabled = 'true';       document.blog_feedback.openFCK.style.display = 'none';       }       //-->       </script>

把其寫成一個簡單的函數,當用戶顯示打開編輯器時才生成這個fckeditor,不用每次刷新頁面都去初始化一個編輯器,頁面的速度就會快多了。

------------------------------------------------------------------------------ 補遺:前面講到了,說是在編輯已有數據內容時不要用JS版的,那是因爲單引號(')的問題造成的,在數據內容裏難免會有單引號存在而用JS版生成編輯器時可能就會因爲單引號問題,而使編輯器無法正常生成,而採用asp則不同,用ASP版本的是因爲數據被當成是一個變量了,然後直接賦值給編輯器域。還有就是除非你要用ReplaceTextArea()方法來生成編輯器,否則你不需先寫一個<textarea>這樣的標籤,一切都會由fckeditor自動生成的,你所需做的只是給fckeditor指定一個實例名。同時你也不用擔心如何提交,在表單提交的時候,fckeditor會自動提交,提交的變量名是以你指定的fckeditor實例命名的。

================================== FCKeditor2.0在線編輯器的修改與設置-文件上傳部分 以下部分爲原創,如需轉載請註明“出處:http://3rgb.com 作者:檸檬園主” 上次我們講了FCKeditor的使用相關的設置以及一些優化設置,對於普通的用戶已經很受用了,今天再來講幾個小技巧,另外着重講一下對上傳文件部分的定製,適用於高級用戶。 第一部分,裝自己定製的插件,實現模板標籤(開源的東西就有這點好處,隨心所欲地修改),打開fckconfig.js文件找到 FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ; // FCKConfig.Plugins.Add( 'placeholder', 'en,it' ) ; 去掉//後,就相當於把placeholder這個插件功能加上了,fckeditor的插件文件都在/editor/plugins/文件夾下分類按文件夾放置的,對於fckeditor2.0來說,裏面有兩個文件夾,也就是有兩個官方插件,placeholder這個文件夾就是我們剛纔加上去的,主要用於多參數或單參數自定義標籤的匹配,這個在製作編輯模板時非常管用,要想看具體實例的話,大家可以去下載acms這個系統查看學習,另一個文件夾 tablecommands就是編輯器裏的表格編輯用到的了。當然,如果你想製作自己其它用途的插件,那就只要按照fckeidtor插件的製作規則製作完放置在/editor/plugins/下就行,然後再在fckeidtor.js裏再添加FCKConfig.Plugins.Add ('Plugin Name',',lang,lang');就可以了。 第二部分,使用自己的表情圖標,同樣打開fckcofnig.js到最底部那一段 FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ; FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif'] ; FCKConfig.SmileyColumns = 8 ; FCKConfig.SmileyWindowWidth = 320 ; FCKConfig.SmileyWindowHeight = 240 ; 上面這段已經是我修改過的了,爲了我發表此文的版面不會被撐得太開,我把FCKConfig.SmileyImages那一行改得只有三個表情圖了。 第一行,當然是表情圖標路徑的設置,第二行是相關表情圖標文件名的一個List,第三行是指彈出的表情添加窗口最每行的表情數,下面兩個參數是彈出的模態窗口的寬和高嘍。 第三部分,文件上傳管理部分 此部分可能是大家最爲關心的,上一篇文章簡單的講了如何修改來上傳文件以及使用fckeidtor2.0才提供的快速上傳功能。再我們繼續再深層次的講解上傳功能 FCKConfig.LinkBrowser = true ; FCKConfig.ImageBrowser = true ; FCKConfig.FlashBrowser = true ; 在fckconfig.js 找到這三句,這三句不是連着的哦,只是我把他們集中到這兒來了,設置爲true的意思就是允許使用fckeditor來瀏覽服務器端的文件圖像以及 flash等,這個功能是你插入圖片時彈出的窗口上那個“瀏覽服務器”按鈕可以體現出來,如果你的編輯器只用來自己用或是隻在後臺管理用,這個功能無疑很好用,因爲他讓你很直觀地對服務器的文件進行上傳操作。但是如果你的系統要面向前臺用戶或是像blog這樣的系統要用的話,這個安全隱患可就大了哦。於是我們把其一律設置爲false;如下 FCKConfig.LinkBrowser = false ; FCKConfig.ImageBrowser = false ; FCKConfig.FlashBrowser = false ; 這樣一來,我們就只有快速上傳可用了啊,好!接下來就來修改,同樣以asp爲範例進行,進入/editor/filemanager/upload/asp/打開config.asp,修改 ConfigUserFilesPath = "/UserFiles/" 這個設置是上傳文件的總目錄,我這裏就不動了,你想改自己改了 好,再打開此目錄下的upload.asp文件,找到下面這一段 Dim resourceType If ( Request.QueryString("Type") <> "" ) Then resourceType = Request.QueryString("Type") Else resourceType = "File" End If 然後再在其後面添加 ConfigUserFilesPath = ConfigUserFilesPath & resourceType &"/"& Year(Date()) &"/"& Month(Date()) &"/" 這樣的話,上傳的文件就進入“/userfiles/文件類型(如image或file或flash)/年/月/”這樣的文件夾下了,這個設置對單用戶來用已經足夠了,如果你想給多用戶系統用,那就這樣來改 ConfigUserFilesPath = ConfigUserFilesPath & Session("username") & resourceType &"/"& Year(Date()) &"/"& Month(Date()) &"/" 這樣上傳的文件就進入“/userfiles/用戶目錄/文件類型/年/月/”下了,當然如果你不想這麼安排也可以修改成別的,比如說用戶目錄再深一層等,這裏的Session("username")請根據自己的需要進行修改或換掉。 上傳的目錄設置完了,但是上傳程序還不會自己創建這些文件夾,如果不存在的話,上傳不會成功的,那麼我們就得根據上面的上傳路徑的要求進行遞歸來生成目錄了。 找到這一段 Dim sServerDir sServerDir = Server.MapPath( ConfigUserFilesPath ) If ( Right( sServerDir, 1 ) <> "/" ) Then sServerDir = sServerDir & "/" End If 把它下面的這兩行 Dim oFSO Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" ) 用下面這一段代碼來替換 dim arrPath,strTmpPath,intRow strTmpPath = "" arrPath = Split(sServerDir, "/") Dim oFSO Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" ) for intRow = 0 to Ubound(arrPath) strTmpPath = strTmpPath & arrPath(intRow) & "/" if oFSO.folderExists(strTmpPath)=false then oFSO.CreateFolder(strTmpPath) end if next 用這段代碼就可以生成你想要的文件夾了,在上傳的時候自動生成。 好了,上傳文件的修改到現在可以暫時告一段落了,但是,對於中文用戶還存在這麼個問題,就是fckeditor的文件上傳默認是不改名的,同時還不支持中文文件名,這樣一來是上傳的文件會變成“.jpg”這樣的無法讀的文件,再就是會有重名文件,當然重名這點倒沒什麼,因爲fckeditor會自動改名,會在文件名後加(1)這樣來進行標識。但是,我們通常的習慣是讓程序自動生成不重複的文件名 在剛纔那一段代碼的下面緊接着就是 ' Get the uploaded file name. sFileName = oUploader.File( "NewFile" ).Name 看清楚了,這個就是文件名啦,我們來把它改掉,當然得有個生成文件名的函數才行,改成下面這樣 '//取得一個不重複的序號 Public Function GetNewID() dim ranNum dim dtNow randomize dtNow=Now() ranNum=int(90000*rnd)+10000 GetNewID=year(dtNow) & right("0" & month(dtNow),2) & right("0" & day(dtNow),2) & right("0" & hour(dtNow),2) & right("0" & minute(dtNow),2) & right("0" & second(dtNow),2) & ranNum End Function ' Get the uploaded file name. sFileName = GetNewID() &"."& split(oUploader.File( "NewFile" ).Name,".")(1) 這樣一來,上傳的文件就自動改名生成如20050802122536365.jpg這樣的文件名了,是由年月日時分秒以及三位隨機數組成的文件名了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章