在使用Dedecms时,每次新上传图片插入编辑器会自动添加p标签的问题常常困扰着用户。这种现象可能导致网页布局错位等问题。以下是两种解决此问题的方法。
第一种方法是修改网站根目录下的文件。具体步骤如下:

// 修改 \\\\include\\\\FCKeditor\\\\editor\\\\dialog\\\\dede_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标签。
第二种方法是在发布文章时自动过滤掉特定的HTML标签。例如,“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 文件
在以下代码后添加:
$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);
通过上述修改,可以确保在发布文章时自动过滤掉不需要的“div”标签。
此外,在FCK编辑器中,默认情况下段落是以p标签作为分隔符的。为了避免内容中的p标签与页面布局混淆,可以进行以下设置: 第一步:在fckconfig.js文件中查找以下代码并修改:

FCKConfig.EnterMode = 'p' ;
第二步:修改fckeditorcode_ie.js和fckeditorcode_gecko.js文件,将以下代码修改为一致的内容:

FCKConfig.EnterMode=='p'?'p':'p'
通过这些调整,可以确保编辑器不再自动添加不必要的p标签,从而提升网页布局的整洁性。
如果在粘贴内容时遇到问题,如从记事本或Word中复制内容到Dedecms编辑器时出现大量p标签,可以尝试使用编辑器中的“粘贴纯文本”功能(通常是一个类似记事本的图标),这将有效避免不必要的标签插入。