去除Dede編輯器粘貼/回車都自動加DIV的方法
發表日期:2018-09 文章編輯:小燈 瀏覽次數:2467
DEDE5.6版及后續版本內置的可視化編輯器變成了只有ckeditor 使用中發現一個問題不管是黏貼文本進來,還是手工輸入,然后回車,都會被自動加<DIV>標簽,如果遇到長文章,自動分頁,可能會出現<DIV></DIV>標簽被截斷的現象,造成文章后面的模板全部錯亂。因此需要將自動添加的<DIV>標簽去除。
打開/dede/inc/inc_archives_functions.php
大概在這個文件的第633行找到下面的代碼:
function AnalyseHtmlBody($body,&$description,&$litpic,&$keywords,$dtype='')
{
在下面加入如下代碼:
$body = str_replace("div","p",$body);
echo $str."\n";
但是以上代碼僅限于普通的網站,也就是不會在發布的文章中有文本的<DIV>字符的,如果是站長源碼類網站,或者技術類網站,因為經常會在文章中出現<DIV>的字眼,這些字同樣會在發布的時候被自動替換掉,這樣就使發布的文章跟原文不一樣的。因此笨牛網在嘗試了以上方法后發現不適合笨牛網(BNXB.COM)使用,繼續查閱文章,發現可以從CKEDITOR的配置文件著手
/include/ckeditor/config.js
在
/*
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.editorConfig = function( config )
{
// Define changes to default configuration here. For example:
// config.language = 'fr';
config.uiColor = '#F1F5F2';
// 文件瀏覽
config.filebrowserImageBrowseUrl = "../include/dialog/select_images.php";
config.filebrowserFlashBrowseUrl = "../include/dialog/select_media.php";
config.filebrowserImageUploadUrl = "../include/dialog/select_images_post.php";
下方添加
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_P;
config.enterMode = CKEDITOR.ENTER_BR;這句在的意思就是將ENTER換行的換行符改成<BR>
config.shiftEnterMode = CKEDITOR.ENTER_P; 這句的意思就是將SHIFT+ENTER換行的換行符改成<P>
所以如果想ENTER改成<P>那可以使用config.enterMode = CKEDITOR.ENTER_P;
改完后文件如下
/*
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.editorConfig = function( config )
{
// Define changes to default configuration here. For example:
// config.language = 'fr';
config.uiColor = '#F1F5F2';
// 文件瀏覽
config.filebrowserImageBrowseUrl = "../include/dialog/select_images.php";
config.filebrowserFlashBrowseUrl = "../include/dialog/select_media.php";
config.filebrowserImageUploadUrl = "../include/dialog/select_images_post.php";
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_P;
config.autoParagraph = false;
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_P;
};
這樣在手工錄入的時候就可以按回車換行,換行符是<BR>而不是之前的<DIV>了。
不過到這里還不是完全符合我們的要求,我們從外部TXT文件黏貼內容進來,任然會被自動套一層<DIV></DIV>
以下繼續改進
打開/include/ckeditor/ckeditor.js
然后查找 'p':'div' 改成'div':'p'
完成
本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶參考了本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.junxiaosheng.cn/4350.html