- 在后台直接填写英文名(最推荐、最简单)
- 使用自定义栏目模型(功能最强大、最灵活)
在后台直接填写英文名(最常用)
这种方法利用了 DedeCMS 栏目默认的 keywords (关键词) 字段来存储英文名,这是一个非常巧妙且无需修改数据库的“懒人”方法。

操作步骤:
修改模板文件 (templets/default/...)
在你需要显示英文名的模板文件中(list_article.htm 列表页或 article_article.htm 内容页),使用以下代码:
{dede:field.name function='htmlspecialchars(@me)'/}
<!-- 显示中文栏目名,关于我们 -->
<!-- 以下是调用英文名的代码 -->
{dede:field.keywords function='htmlspecialchars(@me)'/}
在后台栏目管理中填写英文名
- 登录你的 DedeCMS 后台。
- 进入【核心】 -> 【栏目管理】。
- 找到你想要设置英文名的栏目,点击后面的【基本设置】。
- 在打开的页面中,找到【】输入框。
- 在这个框里输入你的英文名,如果你的栏目中文名是“关于我们”,就在这里输入
About Us。 - 点击【保存】。
工作原理:
模板中的 {dede:field.keywords/} 标签会调取该栏目的关键词内容,我们在这里把它当作英文名来使用。htmlspecialchars() 函数是为了防止特殊字符导致页面显示错误。

优点:
- 简单快捷:无需任何代码修改或数据库操作。
- 无需新字段:利用了系统自带的
keywords字段。
缺点:
- 语义不清晰:
keywords字段本意是用于 SEO 关键词,现在用来存英文名,对不熟悉的人来说可能有点困惑。 - 功能受限:无法在频道封面页等场景直接调用,因为频道封面页的标签可能不支持
field.keywords。
使用自定义栏目模型(最专业、最灵活)
如果你希望有一个专门的字段来存储英文名,并且希望调用更规范、更灵活,那么自定义栏目模型是最佳选择。
操作步骤:
在数据库中添加新字段

这是最关键的一步,你需要为 dede_arctype 表(栏目表)增加一个新的字段来存储英文名。
- 备份数据库! (非常重要,以防万一)
- 使用你的数据库管理工具(如 phpMyAdmin),登录到你的网站数据库。
- 找到
dede_arctype表(如果你的表前缀不是dede_,请使用你自己的前缀)。 - 在该表中执行
SQL语句,添加一个新字段,en_name。
ALTER TABLE `dede_arctype` ADD `en_name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '栏目英文名';
说明:
en_name:是你给新字段起的名字,你可以自定义,english_name。VARCHAR(255):是字段类型和长度,足够存储英文名了。NOT NULL DEFAULT '':表示该字段不能为空,默认值为空字符串。
修改后台栏目管理界面
你需要让后台在添加/编辑栏目时,能显示出这个新字段。
-
打开 DedeCMS 安装目录下的文件:
/dede/templets/catalog_add.htm(添加栏目模板)/dede/templets/catalog_edit.htm(编辑栏目模板) -
在这两个文件中,找到类似
<tr>的行,在合适的位置(栏目名称”和“上级栏目”的后面)添加以下 HTML 代码:
<tr>
<td height="26" style="width:*px;">栏目英文名:</td>
<td>
<input name="en_name" type="text" id="en_name" size="30" class="alltxt" value="<?php echo $row['en_name']?>" />
<span>用于调用显示,如:About Us</span>
</td>
</tr>
修改处理逻辑文件
后台需要保存你输入的英文名。
-
打开文件:
/dede/catalog_add.php(添加栏目处理文件) -
在文件中找到
$queryTemplate = "INSERT INTOdede_arctype 这段 SQL 插入语句,在 和 之间,最后一个字段前加上en_name,在 VALUES 的 和 之间,最后一个值前加上'$en_name'。修改前 (示例):
$queryTemplate = "INSERT INTO `dede_arctype` (`reid`, `topid`, `sortrank`, `typename`, `typedir`, `isdefault`, `defaultname`, `issend`, `arcsta`, `sendrank`, `moresite`, `siteurl`, `sitepath`, `description`, `keywords`, `seotitle`, `modname`, `addcon`, `nativeplace`, `display`, `displaytype`, `corank`) VALUES ('$reid', '$topid', '$sortrank', '$typename', '$typedir', '$isdefault', '$defaultname', '$issend', '$arcsta', '$sendrank', '$moresite', '$siteurl', '$sitepath', '$description', '$keywords', '$seotitle', '$modname', '$addcon', '$nativeplace', '$display', '$displaytype', '$corank')";修改后 (示例):
$queryTemplate = "INSERT INTO `dede_arctype` (`reid`, `topid`, `sortrank`, `typename`, `typedir`, `isdefault`, `defaultname`, `issend`, `arcsta`, `sendrank`, `moresite`, `siteurl`, `sitepath`, `description`, `keywords`, `seotitle`, `modname`, `addcon`, `nativeplace`, `display`, `displaytype`, `corank`, `en_name`) VALUES ('$reid', '$topid', '$sortrank', '$typename', '$typedir', '$isdefault', '$defaultname', '$issend', '$arcsta', '$sendrank', '$moresite', '$siteurl', '$sitepath', '$description', '$keywords', '$seotitle', '$modname', '$addcon', '$nativeplace', '$display', '$displaytype', '$corank', '$en_name')"; -
用同样的方法修改编辑栏目的处理文件:
/dede/catalog_edit.php,找到UPDATE语句,在SET后面添加en_name='$en_name'。
在模板中调用英文名
你可以在任何模板文件中通过以下标签调用英文名了:
{dede:field.en_name function='htmlspecialchars(@me)'/}
优点:
- 功能强大:可以创建任意多的自定义字段。
- 逻辑清晰:字段名
en_name的用途一目了然。 - 调用灵活:可以在所有支持
{dede:field}的地方调用。
缺点:
- 操作复杂:需要修改数据库和后台文件,对新手有一定门槛。
总结与建议
| 特性 | 方法一 (使用 keywords) | 方法二 (自定义字段) |
|---|---|---|
| 实现难度 | ⭐ (非常简单) | ⭐⭐⭐ (需要数据库和代码知识) |
| 维护性 | ⭐⭐ (功能混杂) | ⭐⭐⭐⭐⭐ (功能清晰) |
| 灵活性 | ⭐⭐ (调用受限) | ⭐⭐⭐⭐⭐ (完全灵活) |
| 推荐场景 | 个人博客、小型网站,对英文名需求不复杂。 | 企业官网、多语言网站、对代码规范性要求高的项目。 |
给你的建议:
- 如果只是偶尔一两个栏目需要英文名,或者不想动数据库,直接使用方法一,最快最省事。
- 如果你的网站需要长期、规范地使用英文名,并且可能还需要其他自定义属性(比如栏目副标题、图标等),强烈推荐使用方法二,它是一劳永逸的解决方案。
