凌峰创科服务平台

DedeCms如何搭建双语网站?

DedeCMS 本身是单语言的,但它提供了非常灵活的机制来实现多语言网站,核心思路是利用其强大的自定义模型和字段功能,为每个内容条目附加一个语言版本的数据

DedeCms如何搭建双语网站?-图1
(图片来源网络,侵删)

下面我将为你分解实现步骤、优缺点以及更现代的替代方案。


核心实现方案:自定义模型 + 多语言字段

这是最经典、最灵活的 DedeCMS 多语言实现方法,尤其适合内容结构复杂(如文章、产品、案例等)的网站。

第一步:创建自定义模型

默认的“文章模型”可能无法满足双语需求,我们需要创建一个全新的、专为多语言设计的模型。

  1. 登录后台:进入 DedeCMS 后台。
  2. 找到模型管理:在“核心” -> “内容模型管理”中,点击“增加一个新模型”。
  3. 填写模型信息
    • 模型名称:双语文章模型”。
    • 表前缀:保持默认 dede_archives 或使用新的,如 dede_archives_en(但通常不推荐,保持原表更简单)。
    • 附加表dede_addonarticle_multilang,这个表将用来存储我们自定义的双语字段。
  4. 设置字段:这是最关键的一步,我们需要为这个模型添加多语言字段。
    • 点击“字段管理” -> “增加新字段”。
    • 字段名en_title (英文标题)
    • 字段类型单行文本
    • 是否为空
    • 重复
    • 其他选项:根据需要设置,如“默认值”、“显示顺序”等。
    • 保存后,继续添加其他字段:
      • en_body (英文内容) -> 字段类型Html文本编辑器
      • en_description (英文摘要) -> 字段类型多行文本
      • en_keywords (英文关键词) -> 字段类型单行文本
    • 重复此过程,为所有需要双语的内容(如产品、服务)创建对应的模型和字段。

第二步:修改模板文件

模板是实现语言切换和显示的关键。

DedeCms如何搭建双语网站?-图2
(图片来源网络,侵删)
  1. 创建语言切换按钮: 在你的网站头部模板(如 head.htm)中,添加一个语言切换的链接。

    <div class="lang-switch">
        <a href="{dede:global.cfg_cmsurl/}/?lang=cn">中文</a>
        <a href="{dede:global.cfg_cmsurl/}/?lang=en">English</a>
    </div>
  2. 详情页模板 (article_article.htm): 在这个模板中,你需要根据当前语言变量来决定显示哪个字段。

    • 获取语言变量:在模板开头,通过 PHP 获取 URL 中的 lang 参数。
      {dede:php}
      $lang = isset($_GET['lang']) && in_array($_GET['lang'], ['cn', 'en']) ? $_GET['lang'] : 'cn';
      {/dede:php}
    • {dede:field.name function='htmlspecialchars(@me)'/}

      这里需要修改,直接调用 name 字段(中文标题),为了更清晰,可以修改为:

      <h1>
          {dede:php}
          if ($lang == 'en') {
              echo $this->Fields['en_title'];
          } else {
              echo $this->Fields['title']; // DedeCMS 默认标题字段
          }
          {/dede:php}
      </h1>
    • <div class="article-content">
          {dede:php}
          if ($lang == 'en') {
              echo $this->Fields['en_body'];
          } else {
              echo $this->Fields['body']; // DedeCMS 默认内容字段
          }
          {/dede:php}
      </div>
    • 对列表页 (list_article.htm) 和首页 (index.htm) 做同样修改,循环调用时根据 $lang 变量来显示 en_titletitle

第三步:发布内容时的注意事项

在后台发布文章时,你需要在“高级选项”中找到你添加的字段(如 en_title, en_body),并填入对应的英文内容。

DedeCms如何搭建双语网站?-图3
(图片来源网络,侵删)

优缺点分析

优点

  1. 高度灵活:可以精确控制每个字段的语言版本,适合内容结构复杂的网站。
  2. 数据统一:所有语言版本的数据都存储在同一个内容条目中,管理方便,易于同步更新。
  3. SEO 友好:可以通过 URL 参数(如 ?lang=en)让搜索引擎识别不同语言版本,虽然不如子域名(en.example.com)完美,但可以通过 sitemap 等方式弥补。
  4. 充分利用 DedeCMS:不需要修改核心文件,升级相对安全。

缺点

  1. 模板修改复杂:需要手动修改大量模板文件,并嵌入 PHP 代码,对不熟悉 PHP 和 DedeCMS 模板语法的人来说有难度。
  2. 维护成本高:每次添加新模型或字段,都需要同时为所有语言版本创建,并修改相关模板,容易出错。
  3. URL 结构不理想?lang=en 的方式不够优雅,对 SEO 不如子域名或目录(/en/)友好。
  4. 非标准化:这算是一种“hack”或“变通”方案,不是 DedeCMS 的原生设计,可能不符合最佳实践。

替代方案与最佳实践

除了上述方法,还有其他实现方式,各有优劣。

使用子站或栏目分离(简单但笨重)

  • 方法:创建两套完全独立的栏目(如“中文新闻”和“English News”),然后分别发布内容。
  • 优点:实现最简单,无需修改模板或模型。
  • 缺点
    • 数据完全分离:无法同步更新,修改一篇文章需要修改两次。
    • 管理混乱混杂,难以统一管理。
    • 用户体验差:语言切换需要跳转到不同的栏目,URL 结构不统一。
    • 不推荐:仅适用于极少数、内容完全不相关的网站。

使用现成的多语言插件

  • 方法:在网上搜索“DedeCMS 多语言插件”,有一些开发者制作了现成的插件。
  • 优点:开箱即用,节省开发时间。
  • 缺点
    • 兼容性风险:插件可能与你的 DedeCMS 版本不兼容,或与其它插件冲突。
    • 安全性:来源不明的插件可能包含后门。
    • 功能受限:插件功能可能不够灵活,无法满足个性化需求。
    • 停止维护:很多旧插件早已无人维护。

升级到更现代的 CMS(强烈推荐)

对于任何新项目,或者对网站有长期规划(如频繁更新、追求更好的 SEO 和用户体验),强烈建议不要使用 DedeCMS 来构建双语网站

DedeCMS 是一个时代的产物,其架构和设计理念与现代 CMS 相比已经落后,现代 CMS 在多语言支持方面有天生的优势:

  1. WordPress + WPML/Polylang 插件

    • WPML:功能最强大、最专业的多语言解决方案,支持所有内容类型,SEO 优化极佳。
    • Polylang:免费且功能强大,适合大多数网站。
    • 优势:原生支持,无需复杂操作,URL 结构灵活(子域名、子目录、语言代码),翻译管理极其方便,社区庞大,文档丰富。
  2. Joomla + JoomFish/FLEXIcontent

    Joomla 本身对多语言有较好的支持,配合相关插件可以实现非常专业的多语网站。

  3. 国产 CMS(如 Typecho, EmpressCMS 等)

    一些新兴的国产 CMS 开始重视多语言支持,可能提供更简洁的解决方案。

方案 难度 灵活性 维护成本 SEO 推荐度
自定义模型 极高 中等 ★★☆☆☆ (仅限旧项目改造)
子站/栏目分离 ☆☆☆☆☆ (不推荐
分享:
扫描分享到社交APP
上一篇
下一篇