织梦dedecms5.7发布文章提示“标题不能为空”的解决方法
在使用织梦dedecms5.7后台发布文章时,如果遇到系统提示“标题不能为空”的问题,通常是由于PHP版本升级至PHP5.4后,htmlspecialchars函数默认使用utf8编码,而gbk编码字符串经htmlspecialchars转义后中文字符串变为空,导致标题为空,以下是详细的解决方法:
问题症状
1、V5.7登录后台后:发布英文标题正常,但发布中文标题会提示“标题不能为空”。
2、问题根源:htmlspecialchars在php5.4中默认为utf8编码,gbk编码字符串经htmlspecialchars转义后的中文字符串为空,即标题为空。
解决办法
1、修改dede/article_add.php和dede/article_edit.php文件:
将以下代码:
```php
$title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen));
```
修改为:
```php
$title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen), ENT_COMPAT, 'GB2312');
```
2、修改include/ckeditor/ckeditor_php5.php文件:
在第138行附近,将以下代码:
```php
htmlspecialchars($value)
```
修改为:
```php
htmlspecialchars($value, ENT_COMPAT, 'GB2312')
```
3、测试发布文章:经过上述修改后,重新尝试发布文章,应该能够成功发布中文标题。
注意事项
1、源码修改风险:直接修改程序源码可能会带来风险,建议在进行任何修改前备份原始文件。
2、PHP版本兼容性:如果不想修改源码,可以考虑暂时降级到PHP5.3版本,等待织梦官方更新支持PHP5.4后再进行升级。
相关问答FAQs
问题1:为什么在dedecms5.7中发布中文标题会提示“标题不能为空”?
答:这是因为在PHP5.4中,htmlspecialchars函数默认使用utf8编码,而gbk编码的中文字符串在经过htmlspecialchars转义后会变成空字符串,导致系统检测到标题为空,从而提示“标题不能为空”。
问题2:如果不想修改源码,有其他解决方案吗?
答:是的,如果不希望修改源码,可以选择暂时降级到PHP5.3版本,等织梦官方更新支持PHP5.4后,再进行服务器空间的更换和PHP版本的升级,这样可以在不影响现有功能的情况下解决问题。
### Dedecms 5.7 发布文章提示“标题不能为空”的解决方法
#### 1. 问题
在使用 Dedecms 5.7 系统发布文章时,如果遇到提示“标题不能为空”,可能是由于以下几个原因导致的:
表单提交时标题字段未正确填写。
系统配置或模板代码错误。
数据库字段设置问题。
#### 2. 解决步骤
##### 步骤一:检查表单填写
确保在发布文章时,标题字段已经被正确填写。
如果是批量发布,请检查所有文章的标题是否已填写。
##### 步骤二:检查系统配置
登录 Dedecms 管理后台。
进入“系统设置”或“全局参数”等配置页面。
检查相关配置项,确保没有设置错误。
##### 步骤三:检查模板代码
打开 Dedecms 主题文件夹中的模板文件。
找到发布文章时涉及标题显示的模板代码。
确保代码中标题字段被正确引用。
##### 步骤四:检查数据库字段
登录数据库管理工具。
选择 Dedecms 对应的数据库名。
查看文章表(通常为 `dede_arctype` 或 `dede_archives`)中标题字段的设置。
确认标题字段(如 `title`)不为空,并且类型设置为文本。
##### 步骤五:修复代码
如果发现模板代码错误,进行相应的修正。
如果数据库字段设置问题,进行相应的调整。
#### 3. 代码示例(模板修复)
以下是一个简单的模板修复示例,假设标题字段在模板中引用错误:
```html
{$dede_field.title}
{$title}
```
#### 4. 归纳
通过以上步骤,通常可以解决 Dedecms 5.7 发布文章时提示“标题不能为空”的问题,如果问题依然存在,可能需要进一步检查系统日志或联系技术支持获取帮助。