在使用Dedecms CMS时,许多用户可能会遇到一个问题:图集自定义字段中的图片代码在保存后会变成“style=...”的形式。这个问题不仅影响了页面的正常显示,还可能让用户在百度等搜索引擎上多次查找解决方案却无果。经过深入分析,发现这是Dedecms为了过滤潜在的安全问题而设定的机制。
### 问题表现 1. **文字样式丢失** 当为文字添加蓝色属性时,保存后会发现文字前面多了`yle="color:blue;"`,同时原先设置的标题3属性(如`

`标签)也可能丢失。源代码显示如下:

yle="color:blue;">三国群英传2

正常情况下,代码应为:

三国群英传2

2. **图片长宽属性异常** 在为图片添加长宽属性时,保存后会发现`style`被替换成了`style`,导致样式失效。
### 解决方法 要解决这一问题,需要对Dedecms的核心文件进行修改。以下是具体步骤: #### 第一步:修改`datalistcp.class.php`文件 打开`/include/datalistcp.class.php`文件,找到第237行左右的代码:

$replacement = substr($ra[$i], 0, 2).''.substr($ra[$i], 2);
    
将其替换为以下代码:

$replacement = substr($ra[$i], 0, 2).substr($ra[$i], 2);
    
#### 第二步:修改`filter.helper.php`文件 接着,打开`/include/helpers/filter.helper.php`文件,在大约第98行的位置找到类似的代码:

$replacement = substr($ra[$i], 0, 2).''.substr($ra[$i], 2);
    
同样将其替换为:

$replacement = substr($ra[$i], 0, 2).substr($ra[$i], 2);
    
#### 第三步:保存并测试 完成上述修改后,保存文件并覆盖原文件。然后返回Dedecms后台发布内容,此时你会发现`style`属性不会再被自动替换了。
### 注意事项 虽然通过上述方法可以解决`style`属性被替换的问题,但需要注意的是,Dedecms的这种过滤机制是为了防止XSS攻击等安全问题。因此,在修改核心文件之前,请确保备份相关文件,并根据实际需求评估是否需要保留过滤功能。 希望这篇文章能帮助到正在为此问题困扰的用户!如果有其他疑问,欢迎继续探讨。