- 后台填写的内容被截断,保存不完整。 这通常是数据库字段长度限制导致的。
- 后台可以填写并保存完整内容,但在前台页面显示时被截断。 这是模板标签使用了
cn_substr()等函数截取字符串造成的。
下面我将针对这两种情况,提供详细的解决方案。

后台保存时内容被截断
这个问题几乎可以肯定是 dede_arctype 表(栏目表)中的 description 字段长度不够导致的,DedeCMS 默认的 description 字段是 varchar(255),最多只能存储 255 个字符(注意,是字符,不是字节,对于中文、英文、数字都是一个字符)。
如果你的栏目描述超过了 255 个字符,超出的部分就会被数据库丢弃,导致保存不完整。
解决方法:修改数据库字段长度
这是最根本的解决方法,你需要登录你的数据库管理工具(如 phpMyAdmin),将 description 字段的长度修改得更大一些。

操作步骤:
-
登录数据库管理工具
通常是通过你的主机控制面板找到 phpMyAdmin 并登录。
-
选择正确的数据库
(图片来源网络,侵删)在左侧列表中,选择你的 DedeCMS 所在的数据库。
-
找到
dede_arctype表- 在数据库的列表中,找到以
dede_开头的表(如果你的前缀不是dede_,请相应修改),然后点击dede_arctype表。
- 在数据库的列表中,找到以
-
修改
description字段-
点击顶部菜单栏的 “结构” (Structure) 选项卡。
-
在字段列表中找到
description这一行。 -
在该行的 “操作” (Actions) 列,点击 “更改” (Change) 或 “编辑” (Edit) 链接。
-
在接下来的编辑页面中,找到 “长度/值” (Length/Values) 这一栏。
-
将默认的
255修改为你想要的值,对于中文内容,建议修改为2000或更大一些,5000,这样可以存储非常长的描述。 -
点击 “执行” (Go) 或 “保存” (Save) 按钮来应用更改。
-
完成以上步骤后, 你就可以在后台栏目管理中填写超过 255 个字符的描述了,内容将能够完整保存到数据库中。
后台保存完整,但前台显示被截断
这种情况说明数据库已经能存储完整内容,但你在模板文件中调用栏目描述时,使用了 DedeCMS 的字符串截取函数,导致前台只显示了一部分内容。
解决方法:修改模板文件
你需要找到并修改调用栏目描述的模板文件。
操作步骤:
-
定位模板文件
- 登录你的 DedeCMS 后台。
- 进入 “模板” -> “模板管理”。
- 在左侧选择你当前使用的模板风格。
- 找到调用栏目列表或栏目内容的模板文件,通常是:
list_channel.htm(用于栏目首页)list_category.htm(用于栏目列表页)- 或者其他自定义的模板文件。
- 你需要在这些文件中找到类似
{dede:field.description/}的标签。
-
修改或替换模板标签
-
找到被截断的标签:搜索
description关键字,定位到{dede:field.description/}这个标签。 -
分析原因:DedeCMS 的很多系统标签默认会进行截取。
{dede:field.description/}默认可能只显示 200 个字符左右。 -
解决方案 A:移除截取函数(推荐)
- 最简单的方法是直接使用
description的原始值,你可以使用{dede:field.description function='html2text(@me)'/}来调用,html2text函数可以过滤掉 HTML 标签,只保留纯文本,并且不会进行截断。 - 修改前:
{dede:field.description/} - 修改后:
{dede:field.description function='html2text(@me)'/} - 如果你的描述就是纯文本,不需要过滤 HTML,也可以直接使用
{dede:field.description/},但某些版本可能仍有默认截取,如果仍有问题,可以使用下面的方案。
- 最简单的方法是直接使用
-
解决方案 B:手动指定显示长度
- 如果你希望控制显示的长度,但又觉得默认长度太短,可以使用
cn_substr()函数并指定一个更大的长度。 - 语法:
{dede:field.description function='cn_substr(@me, 长度)'/} - 示例:如果你想显示 500 个字符,可以修改为:
{dede:field.description function='cn_substr(@me, 500)'/} - 这里的
500是你希望显示的最大字符数。
- 如果你希望控制显示的长度,但又觉得默认长度太短,可以使用
-
总结与建议
| 问题现象 | 根本原因 | 解决方案 | 优点 | 缺点 |
|---|---|---|---|---|
| 后台填写保存时被截断 | 数据库 dede_arctype.description 字段长度不足 (默认255) |
修改数据库,将字段长度改大 (如2000/5000) | 从根本上解决问题,数据完整 | 需要操作数据库,有一定风险 |
| 后台保存完整,前台显示被截断 | 模板标签使用了截取函数 | 修改模板文件,使用 function='html2text(@me)' 或指定更大长度 |
灵活可控,不影响数据 | 需要修改模板文件 |
推荐的完整操作流程:
- 执行“情况一”的数据库修改操作,确保你的数据能够完整保存,这是基础。
- 检查你的模板文件,如果发现前台显示仍然不完整,再执行“情况二”的模板修改操作,选择最适合你需求的方案(推荐使用
function='html2text(@me)'来获取完整纯文本描述)。
通过以上两步,你就可以完美解决 DedeCMS 栏目内容长度不足的问题了。
