dede如何制作双语网站?

99ANYc3cd6
预计阅读时长 21 分钟
位置: 首页 DEDE建站 正文

核心思路:利用 DedeCMS 的“频道模型”功能

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

dede制作双语网站
(图片来源网络,侵删)

这种方法的优点:

  • 稳定可靠: 不修改核心程序,避免升级麻烦。
  • 易于管理: 前台通过简单的判断来切换语言,后台管理逻辑清晰。
  • SEO友好: 可以轻松实现 www.example.com/en/www.example.com/cn/ 这样的伪静态路径,对搜索引擎非常友好。

详细操作步骤

第一步:准备工作

  1. 安装 DedeCMS: 确保你已经成功安装并运行了一个干净的 DedeCMS 系统。
  2. 规划栏目结构: 思考你的网站栏目,首页、关于我们、产品服务、新闻资讯、联系方式等,这些栏目在两种语言下是一一对应的。
  3. 准备域名和服务器: 你可以为不同语言设置子域名,cn.example.comen.example.com,或者使用目录形式,www.example.com/cnwww.example.com/en,本教程以目录形式为例,因为它更常见且易于实现。

第二步:创建双语内容模型

这是最关键的一步,我们将为中文和英文分别创建一个内容模型。

  1. 登录 DedeCMS 后台。
  2. 进入“频道模型”管理: 在左侧菜单栏,找到 核心 -> 频道模型 -> 内容模型管理
  3. 创建中文内容模型:
    • 点击 增加一个新模型
    • 模型名称: 中文文章 (可以自定义,方便识别)
    • 模型表: 系统会自动生成,如 dede_addonarticle_cn,无需修改。
    • 字段列表: 保持默认即可,因为我们主要利用系统自带的 title (标题)、body (文章内容) 等字段。
    • 点击 提交
  4. 创建英文内容模型:
    • 重复上述步骤,创建一个新模型。
    • 模型名称: 英文文章
    • 模型表: 同样会自动生成,如 dede_addonarticle_en
    • 点击 提交

你的后台有了两个独立的内容模型。

第三步:创建栏目并关联模型

创建网站栏目,并为每个栏目指定对应的中英文模型。

dede制作双语网站
(图片来源网络,侵删)
  1. 进入“栏目管理”: 在后台 核心 -> 栏目管理 -> 添加栏目
  2. 创建“关于我们”栏目(示例):
    • 栏目名称: 关于我们
    • 栏目目录: about (这个目录名会用于URL,建议用英文)
    • 类型: 选择 普通栏目
    • 内容模型: 选择 中文文章
    • 填写其他信息,如栏目简介、列表模板、文章模板等。
    • 点击 确定
  3. 创建“About Us”栏目(示例):
    • 栏目名称: About Us
    • 栏目目录: about (注意: 这里使用和中文栏目完全相同的目录名!这是实现“同一栏目下双语内容”的关键)
    • 类型: 选择 普通栏目
    • 内容模型: 选择 英文文章
    • 填写其他信息,特别是英文的列表模板和文章模板
    • 点击 确定

重要提示:

  • 中英文栏目的“栏目目录”必须保持一致!这样,前台访问 /about/ 时,系统才能根据语言参数判断调用哪个模型的内容。
  • 你需要为每个主栏目都创建一对这样的中英文栏目。“新闻资讯”和“News”。

第四步:创建和发布内容

你可以开始发布文章了。

  1. 在后台,进入“关于我们”栏目,点击 添加文档
    • 你会发现,表单是基于“中文文章”模型的,可以填写中文标题和内容。
    • 发布一篇文章,例如标题“公司简介”。
  2. 进入 “About Us” 栏目,点击 添加文档
    • 表单变成了“英文文章”模型,填写英文标题和内容,“Company Profile”。
    • 发布。

这样,你就有了两篇独立但关联的文章。

第五步:修改模板文件,实现语言切换

这是连接前后台的最后一步。

dede制作双语网站
(图片来源网络,侵删)
  1. 创建语言切换按钮: 在你的网站头部模板文件(通常是 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 是我们自定义的语言参数。
  2. 修改首页 (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' 是我们自定义的属性,用来区分语言。
  3. 修改列表页和文章页模板 (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 栏目)的模型来调用文章,因为我们在后台已经将中文栏目和英文栏目关联到了不同的模型,所以这里不需要再额外判断。
  4. 修改文章页 (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,我们需要设置伪静态。

  1. 开启伪静态: 在后台 系统 -> 系统基本参数 -> 核心设置 中,将 是否使用伪静态 设置为 “是”。

  2. 配置 .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 就会变得非常简洁。


优化与进阶技巧

  1. 使用公共头部和底部: 将网站的头部 (header.htm) 和底部 (footer.htm) 模板独立出来,所有页面(包括中英文)都调用这两个模板,这样,当你要修改导航栏或版权信息时,只需修改这两个文件即可。

  2. 使用全局变量: 在后台 系统 -> 系统基本参数 -> 添加新变量 中,可以定义一些全局变量,

    • 变量名: site_name_en
    • 变量值: My Website English
    • 所属组: 站点配置 然后在模板中用 {dede:global.cfg_site_name_en/} 来调用。
  3. 图片路径问题: 在上传图片时,确保图片路径是相对于网站根目录的,或者使用绝对路径,以避免切换语言后图片显示不出来。

  4. 内容同步: 这种模型下,中英文内容是完全独立的,需要手动分别发布,如果需要更高级的同步功能(例如一个字段同步),可以考虑使用“联动类别”或自定义字段,但这会增加复杂度,对于大多数网站,手动管理是完全可以接受的。

  5. SEO 优化:

  • 为每个语言版本设置独立的 <title>, <meta name="description">, <meta name="keywords">
  • 中合理使用目标语言的关键词。
  • 考虑使用 hreflang 标签,这有助于搜索引擎了解不同语言版本之间的关系,避免重复内容问题。

通过“创建双语内容模型 -> 创建同目录的中英文栏目 -> 修改模板进行语言判断”这三步核心操作,你就可以在 DedeCMS 上构建一个功能完善、易于维护的双语网站。

虽然初期设置需要一些耐心,但一旦配置完成,后续的内容管理会非常清晰和高效,这个方法经过了大量网站的实践检验,是一个非常成熟和可靠的解决方案。

-- 展开阅读全文 --
头像
C语言数组名到底代表什么?
« 上一篇 今天
织梦女装,是关于梦想的服装吗?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]