在使用dedecms时,许多用户会遇到新上传图片插入编辑器后自动添加p标签的问题。这不仅影响网页布局,还可能导致页面错位等现象。本文将详细介绍如何解决这一问题。


第一种解决方法:

修改网站根目录下的文件 includeFCKeditoreditordialogdede_image.php。
找到以下代码:

//FCK.InsertHtml(inImg);
var newCode = FCK.CreateElement('p');
newCode.innerHTML = inImg;

将其改为:

FCK.InsertHtml(inImg);
//var newCode = FCK.CreateElement('p');
//newCode.innerHTML = inImg;

同时,找到以下代码:

//FCK.InsertHtml(iimghtml);
var newCode = FCK.CreateElement('p');
newCode.innerHTML = iimghtml;

并将其更改为:

FCK.InsertHtml(iimghtml);
//var newCode = FCK.CreateElement('p');
//newCode.innerHTML = iimghtml;

这样就可以成功删除多余的p标签。


第二种解决方法:

发布文章时自动过滤“div”标签。需要对后台/article_add.php进行如下修改:

在代码行

$body = AnalyseHtmlBody($body,$description,$litpic,$keywords,'htmltext');

之下添加:

$body = preg_replace("/</(d|D)(i|I)(v|V)>/","", $body);
$body = preg_replace("/<(d|D)(i|I)(v|V).*?>/","", $body);

同样地,在后台/article_edit.php中也需要进行类似的修改。


FCK编辑器默认使用p标签作为段落标记,因为很多网站采用p+css布局方式,p标签是网页架构中最常用的标签之一。但内容中的p标签容易与页面布局混淆,因此需要特别注意。

具体修改步骤如下:

第一步:在fckconfig.js文件里查找:

FCKConfig.EnterMode = 'p' ;

修改为:

FCKConfig.EnterMode = 'p' ;

第二步:修改fckeditorcode_ie.js和fckeditorcode_gecko.js文件,查找:

FCKConfig.EnterMode=='p'? 'p':'p'

并修改为:

FCKConfig.EnterMode=='p'? 'p':'p'

通过以上步骤,可以确保编辑器不会自动添加p标签。


如果去掉了p标签,原本居中的图片可能会受到影响。可以通过修改/dede/inc/inc_archives_function*.php文件来解决这个问题。查找函数:

function AnalyseHtmlBody($body,&$description,&$litpic,&$keywords,$dtype='')

在其下方加入:

$body = str_replace("p","p",$body);

最后,如果从word文档复制内容粘贴到dedecms编辑器中,每段都会加上p标签。解决办法是在粘贴前点击编辑器中的记事本按钮,选择粘贴纯文本即可。