DEDE織夢cms常用的參數(shù)標(biāo)簽匯總、以及操作過程中的一些bug問題解決方法,dede網(wǎng)站二開,以下龍騰飛網(wǎng)絡(luò)科技-小吳在建站實(shí)操中筆記記錄,織夢dede建站教程保存使用非常方便:
【DEDE建站教程】dede后臺部分頁面錯(cuò)誤;htmlspecialchars問題
dede網(wǎng)站,GBK2312版本會(huì)出現(xiàn)的問題,htmlspecialchars問題,特別在網(wǎng)站搬家后,很多后臺頁面點(diǎn)擊編輯修改會(huì)出現(xiàn)某個(gè)php的某一行有問題。
【解決方法】在相關(guān)的文件某行后面加上,ENT_COMPAT, GB2312或者是,ENT_COMPAT,'ISO-8859-1'即可,即所以涉及htmlspecialchars的代碼都加上即可。下面歸納了一些可能會(huì)出現(xiàn)的問題匯總。以及解決修改方法跟大家說下。
dedecms出現(xiàn)這個(gè)問題與代碼無關(guān),主要是和PHP的版本有關(guān),用的PHP5.4,更換成PHP5.2之后就不會(huì)有這個(gè)問題了。
問題原因是:php5.4版本中htmlspecialchars在php5.4默認(rèn)為utf8編碼,gbk編碼的字符串經(jīng)過htmlspecialchars 轉(zhuǎn)義后的中文字符串為空了,所以造成添加文章時(shí)提示“標(biāo)題不能為空”,編輯文章時(shí)編輯器內(nèi)容空白。
解決的辦法:
1、標(biāo)題不能為空
修改dede/article_add.php 和 dede/article_edit.php 這2個(gè)文件。
把
$title =htmlspecialchars(cn_substrR($title,$cfg_title_maxlen));
改成
$title =htmlspecialchars(cn_substrR($title,$cfg_title_maxlen),ENT_COMPAT, GB2312 );
2、編輯器內(nèi)容空白
打開 include/ckeditor/ckeditor_php5.php 找到大約 138行
將
htmlspecialchars($value)
替換為
htmlspecialchars($value, ENT_COMPAT, GB2312 )
如果是其它v5.6用fck編輯器的,就打開include/FCKeditor/fckeditor.php找到大約 76行
將
$HtmlValue = htmlspecialchars( $this->Value ) ;
替換為
$HtmlValue = htmlspecialchars($this->Value,ENT_COMPAT , GB2312 );
3、系統(tǒng)站點(diǎn)設(shè)置網(wǎng)站名稱、站點(diǎn)默認(rèn)關(guān)鍵字、站點(diǎn)描述也是保存后顯示為空,打開./dede/file_manage_view.php;
搜索
$content= htmlspecialchars($content);
替換成
$content =htmlspecialchars($content,ENT_COMPAT , GB2312 );
4、dede后臺欄目管理--修改欄目--欄目內(nèi)容修改
出現(xiàn)“/include/ckeditor/ckeditor_php5.php on line 137”
追根溯源,是htmlspecialchars惹的禍,PHP 5.4后GBK編碼下默認(rèn)不支持中文,轉(zhuǎn)換后內(nèi)容為空。
修改DeDeCMS/include/ckeditor/ckeditor_php5.php文件,137行左右;如下代碼:
$out = "<textarea name="" . $name . """ . $attr . ">" . htmlspecialchars($value) . "</textarea> ";
改成如下:
$out = "<textarea name="" . $name . """ . $attr . ">" . htmlspecialchars($value,ENT_COMPAT,'ISO-8859-1') . "</textarea> ";
5、一鍵生成全站后
include/taglib/tag.lib.php on line 86
將
$row['tag'] = htmlspecialchars($row['tag']);
修改成
$row['tag'] = htmlspecialchars($row['tag']);
6、打開/include/common.func.php,搜索“function RunApp”,在這個(gè)函數(shù)的上面添加織夢新版本新增的函數(shù):dede_htmlspecialchars,具體代碼如下:
function dede_htmlspecialchars($str) { global $cfg_soft_lang; if (version_compare(PHP_VERSION, '5.4.0', '<')) return htmlspecialchars($str); if ($cfg_soft_lang=='gb2312') return htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1'); else return htmlspecialchars($str); }
追根溯源,是htmlspecialchars惹的禍,PHP 5.4后GBK編碼下默認(rèn)不支持中文,轉(zhuǎn)換后內(nèi)容為空。
UTF-8編碼 沒有任何問題。