最近使用DedeCms5.3和DedeCms5.5遇到了一個不可思議的問題:在添加欄目時IE內核的瀏覽器無法保存欄目內容。到網上搜索了半天沒找到解決方法,查看DedeCms官方搜索到的結果是“欄目內容”無法保存和修改的問題解決方法,打開dede/templets目錄的下面兩個文件
catalog_add.htm 大概519行
catalog_edit.htm 大概426行
將上面兩個文件中指定位置的
GetEditor("content",$myrow['content'],"450","Default","print","false");
替換成
GetEditor("content",$myrow['content'],"450","Basic","print","false");即可!”。
試了一下,問題還是沒解決。
打開DedeCms后台目錄下的文件catalog_edit.php和article_edit.php對比一下,使用相同的函數調出了編輯器,說明DedeCms的程序應該沒問題,而且在Firefox瀏覽器中還可以正確的保存內容,進一步證明了DedeCms的程序是沒問題的。在IE下不行而在Firefox下卻可以,應該是編輯器與DOM之間產生了問題,對比剛才的兩個頁面唯一的區別在於“欄目管理”的地方默認編輯器區域默認是被隱藏了,使用IE查看右下角的錯誤提示:“由於出現錯誤 800a025e 而導致此項操作無法完成”,在網上搜索一下才發現原來是FCKeditor的一個BUG。當FCKeditor的父目錄默認被隱藏,就會出現此類錯誤。找到錯誤原因就好解決問題了,在添加和編輯欄目時,給編輯器添加默認值就可以解決這個問題了。
打開:后台目錄/templets/catalog_edit.htm和catalog_add.htm兩個文件
catalog_add.htm 大概518行
GetEditor("content", "", "450", "Default", "print", "false");
替換為
GetEditor("content", " ", "450", "Default", "print", "false");
給編輯器默認賦一個空格
catalog_edit.htm 大概426行:
GetEditor("content", $myrow['content'], "450", "Default", "print", "false");
替換為
$cont= empty($myrow['content']) ? ' ': $myrow['content']; GetEditor("content", $cont, "450", "Default", "print", "false");
$cont是自己定義的,這樣就解決了欄目內容無法保存的問題。