核心思路:利用 DedeCMS 的“频道模型”功能
DedeCMS 的核心是“栏目”和“文章”,要实现双语,最经典和稳定的方法不是修改程序核心,而是利用其强大的“频道模型”功能,为每种语言创建一个独立的“内容模型”,然后在同一个栏目下,通过不同的模型来发布和管理不同语言的内容。

这种方法的优点:
- 稳定可靠: 不修改核心程序,避免升级麻烦。
- 易于管理: 前台通过简单的判断来切换语言,后台管理逻辑清晰。
- SEO友好: 可以轻松实现
www.example.com/en/和www.example.com/cn/这样的伪静态路径,对搜索引擎非常友好。
详细操作步骤
第一步:准备工作
- 安装 DedeCMS: 确保你已经成功安装并运行了一个干净的 DedeCMS 系统。
- 规划栏目结构: 思考你的网站栏目,首页、关于我们、产品服务、新闻资讯、联系方式等,这些栏目在两种语言下是一一对应的。
- 准备域名和服务器: 你可以为不同语言设置子域名,
cn.example.com和en.example.com,或者使用目录形式,www.example.com/cn和www.example.com/en,本教程以目录形式为例,因为它更常见且易于实现。
第二步:创建双语内容模型
这是最关键的一步,我们将为中文和英文分别创建一个内容模型。
- 登录 DedeCMS 后台。
- 进入“频道模型”管理: 在左侧菜单栏,找到
核心->频道模型->内容模型管理。 - 创建中文内容模型:
- 点击
增加一个新模型。 - 模型名称:
中文文章(可以自定义,方便识别) - 模型表: 系统会自动生成,如
dede_addonarticle_cn,无需修改。 - 字段列表: 保持默认即可,因为我们主要利用系统自带的
title(标题)、body(文章内容) 等字段。 - 点击
提交。
- 点击
- 创建英文内容模型:
- 重复上述步骤,创建一个新模型。
- 模型名称:
英文文章 - 模型表: 同样会自动生成,如
dede_addonarticle_en。 - 点击
提交。
你的后台有了两个独立的内容模型。
第三步:创建栏目并关联模型
创建网站栏目,并为每个栏目指定对应的中英文模型。

- 进入“栏目管理”: 在后台
核心->栏目管理->添加栏目。 - 创建“关于我们”栏目(示例):
- 栏目名称: 关于我们
- 栏目目录:
about(这个目录名会用于URL,建议用英文) - 类型: 选择
普通栏目 - 内容模型: 选择
中文文章 - 填写其他信息,如栏目简介、列表模板、文章模板等。
- 点击
确定。
- 创建“About Us”栏目(示例):
- 栏目名称: About Us
- 栏目目录:
about(注意: 这里使用和中文栏目完全相同的目录名!这是实现“同一栏目下双语内容”的关键) - 类型: 选择
普通栏目 - 内容模型: 选择
英文文章 - 填写其他信息,特别是英文的列表模板和文章模板。
- 点击
确定。
重要提示:
- 中英文栏目的“栏目目录”必须保持一致!这样,前台访问
/about/时,系统才能根据语言参数判断调用哪个模型的内容。 - 你需要为每个主栏目都创建一对这样的中英文栏目。“新闻资讯”和“News”。
第四步:创建和发布内容
你可以开始发布文章了。
- 在后台,进入“关于我们”栏目,点击
添加文档。- 你会发现,表单是基于“中文文章”模型的,可以填写中文标题和内容。
- 发布一篇文章,例如标题“公司简介”。
- 进入 “About Us” 栏目,点击
添加文档。- 表单变成了“英文文章”模型,填写英文标题和内容,“Company Profile”。
- 发布。
这样,你就有了两篇独立但关联的文章。
第五步:修改模板文件,实现语言切换
这是连接前后台的最后一步。

-
创建语言切换按钮: 在你的网站头部模板文件(通常是
head.htm)中,添加一个语言切换的链接。<div class="language-switcher"> <a href="{dede:global.cfg_cmsurl/}/?lang=cn">中文</a> | <a href="{dede:global.cfg_cmsurl/}/?lang=en">English</a> </div>?lang=cn和?lang=en是我们自定义的语言参数。
-
修改首页 (
index.htm): 在首页循环调用栏目的地方,加入语言判断。{dede:arclist typeid='about' row='5' lang='cn'} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclist}typeid='about'指定调用“关于我们”栏目的文章。lang='cn'是我们自定义的属性,用来区分语言。
-
修改列表页和文章页模板 (
list_*.htm,article_*.htm): 这是最重要的部分,我们需要在模板顶部通过 PHP 代码来判断当前语言,并调用对应的数据。以列表页
list_about.htm为例:<!DOCTYPE html> <html> <head> <title>{dede:global.cfg_webname/} - {dede:field.title/}</title> <!-- 其他 head 内容 --> </head> <body> <!-- 在模板顶部加入 PHP 代码 --> {dede:php} // 获取URL中的语言参数 $lang = isset($_GET['lang']) ? $_GET['lang'] : 'cn'; // 根据语言设置不同的标题和SEO信息 if ($lang == 'en') { $this->Fields['title'] = 'About Us'; $this->Fields['description'] = 'This is the English version of About Us.'; // 可以在这里设置更多英文相关的变量 } else { $this->Fields['title'] = '关于我们'; $this->Fields['description'] = '这是关于我们的中文介绍。'; } {/dede:php} <h1>{dede:field.title/}</h1> <!-- 循环输出文章列表 --> {dede:list pagesize='10'} <h2><a href="[field:arcurl/]">[field:title/]</a></h2> <p>[field:description function='cn_substr(@me, 100)'/]...</p> {/dede:list} <!-- 分页 --> {dede:pagelist listsize='4'/} </body> </html>代码解释:
{dede:php}...{/dede:php}允许你在模板中直接写 PHP 代码。isset($_GET['lang'])检查 URL 中是否有lang参数。$this->Fields['title']动态修改了页面的标题,你可以用同样的方式修改描述、关键词等。- 文章列表
{dede:list}会自动根据当前栏目(list_about.htm对应about栏目)的模型来调用文章,因为我们在后台已经将中文栏目和英文栏目关联到了不同的模型,所以这里不需要再额外判断。
-
修改文章页 (
article_about.htm): 文章页的逻辑和列表页类似,同样需要在顶部加入 PHP 代码来动态设置标题等。{dede:php} $lang = isset($_GET['lang']) ? $_GET['lang'] : 'cn'; if ($lang == 'en') { $this->Fields['title'] = 'Article Title - English'; } else { $this->Fields['title'] = '文章标题 - 中文'; } {/dede:php} <h1>{dede:field.title/}</h1> <div class="content"> {dede:field.body/} </div>
第六步:设置伪静态(可选但推荐)
为了让 URL 更美观,www.example.com/about/ 而不是 www.example.com/plus/list.php?tid=5,我们需要设置伪静态。
-
开启伪静态: 在后台
系统->系统基本参数->核心设置中,将是否使用伪静态设置为 “是”。 -
配置
.htaccess文件: 如果你的服务器是 Apache,在网站根目录下创建或修改.htaccess文件,加入以下规则:<IfModule mod_rewrite.c> RewriteEngine On # 伪静态首页 RewriteRule ^index\.html$ index\.php [L] # 伪静态栏目列表页 RewriteRule ^(.*)/list-([0-9]+)\.html$ $1/plus/list\.php?tid=$2 [L] # 伪静态文章内容页 RewriteRule ^(.*)/([0-9]+)-([0-9]+)\.html$ $1/plus/view\.php?arcID=$2 [L] </IfModule>
这样,你的网站 URL 就会变得非常简洁。
优化与进阶技巧
-
使用公共头部和底部: 将网站的头部 (
header.htm) 和底部 (footer.htm) 模板独立出来,所有页面(包括中英文)都调用这两个模板,这样,当你要修改导航栏或版权信息时,只需修改这两个文件即可。 -
使用全局变量: 在后台
系统->系统基本参数->添加新变量中,可以定义一些全局变量,- 变量名:
site_name_en - 变量值:
My Website English - 所属组:
站点配置然后在模板中用{dede:global.cfg_site_name_en/}来调用。
- 变量名:
-
图片路径问题: 在上传图片时,确保图片路径是相对于网站根目录的,或者使用绝对路径,以避免切换语言后图片显示不出来。
-
内容同步: 这种模型下,中英文内容是完全独立的,需要手动分别发布,如果需要更高级的同步功能(例如一个字段同步),可以考虑使用“联动类别”或自定义字段,但这会增加复杂度,对于大多数网站,手动管理是完全可以接受的。
-
SEO 优化:
- 为每个语言版本设置独立的
<title>,<meta name="description">,<meta name="keywords">。 - 中合理使用目标语言的关键词。
- 考虑使用
hreflang标签,这有助于搜索引擎了解不同语言版本之间的关系,避免重复内容问题。
通过“创建双语内容模型 -> 创建同目录的中英文栏目 -> 修改模板进行语言判断”这三步核心操作,你就可以在 DedeCMS 上构建一个功能完善、易于维护的双语网站。
虽然初期设置需要一些耐心,但一旦配置完成,后续的内容管理会非常清晰和高效,这个方法经过了大量网站的实践检验,是一个非常成熟和可靠的解决方案。
