在使用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标签。解决办法是在粘贴前点击编辑器中的记事本按钮,选择粘贴纯文本即可。