织梦模板如何增加新语言页面?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 织梦建站 正文

核心思路

织梦CMS本身不是多语言系统,但我们可以利用其强大的栏目和模板功能来模拟一个多语言站点,核心思路是:

织梦模板增加新语言页面
(图片来源网络,侵删)
  1. 创建语言目录:在网站根目录下为每种语言创建一个文件夹,如 /en/ 代表英文。
  2. 复制站点:将整个织梦站点复制到新的语言目录中。
  3. 分离栏目和内容:将不同语言的内容分别存放在不同的主栏目下(“新闻”栏目下有“中文新闻”和“English News”两个子栏目)。
  4. 制作语言模板:为每种语言制作独立的模板文件,通过判断当前语言目录来加载不同的模板。
  5. 修改链接和配置:确保所有链接都指向正确的语言目录,并修改系统配置以适应新站点。

详细操作步骤

第一步:准备工作(强烈建议)

在进行任何操作之前,请务必备份你的整个网站和数据库! 这是最重要的安全措施。

第二步:创建语言目录和站点文件

  1. 通过FTP或文件管理器,登录你的网站服务器。

  2. 在网站根目录(通常是 public_htmlwww)下,创建一个新的文件夹,en (代表 English)。

  3. 将你原有的织梦站点(除了 datainclude 目录,因为它们是共享的)完整复制en 文件夹中。

    织梦模板增加新语言页面
    (图片来源网络,侵删)
    • 需要复制的目录templets (模板文件夹), special (专题文件夹), uploads (上传文件夹), plus (附加功能文件夹) 等。
    • 不需要复制的目录data (存放缓存和配置文件) 和 include (核心类库),这两个文件夹应该被符号链接硬链接en 目录中,以确保两个站点共享核心数据和功能,如果你不熟悉链接操作,直接复制也可以,但更新时需要两边都更新。

    你的网站结构现在看起来像这样:

    /wwwroot/
    ├── /en/          (英文站点)
    │   ├── /templets/
    │   ├── /uploads/
    │   ├── index.php
    │   └── ... (其他织梦文件)
    ├── /templets/    (中文站点模板)
    ├── /uploads/
    ├── index.php
    ├── dede/          (后台目录)
    ├── data/
    └── include/

第三步:创建多语言栏目结构

这是整个流程的核心,我们需要在后台创建一套平行的栏目结构来存放不同语言的内容。

  1. 登录织梦后台 (/dede/)。

  2. 进入“栏目管理”

    织梦模板增加新语言页面
    (图片来源网络,侵删)
  3. 创建一级语言栏目(可选但推荐):

    • 创建一个顶级栏目,命名为“网站内容”。
    • 在其下创建两个子栏目:
      • 栏目名称
      • 栏目目录cn_content (这个目录名可以任意,但不要和实际语言文件夹混淆)
      • 栏目属性:选择“最终列表栏目”。
      • 创建另一个子栏目
        • 栏目名称English Content
        • 栏目目录en_content
        • 栏目属性:选择“最终列表栏目”。
    • 这样,你的所有中文内容都将放在 cn_content 及其子栏目下,所有英文内容都放在 en_content 及其子栏目下。
  4. 创建具体的内容栏目

    • 在 下,创建你需要的所有栏目,如“公司新闻”、“产品中心”、“关于我们”等。
    • English Content 下,创建对应的英文栏目,如 "Company News", "Products", "About Us" 等。
    • 关键点:确保中英文栏目的层级结构保持一致,这样模板调用时才能方便地对应。

第四步:制作多语言模板

现在我们需要让模板能够识别当前是哪个语言站点,并加载对应的内容。

  1. 复制模板文件

    • 进入 /templets/ 目录,将你当前使用的模板文件夹(default完整复制/en/templets/ 目录下。
    • 你现在有两个一模一样的模板文件夹:/templets/default/ (中文) 和 /en/templets/default/ (英文)。
  2. 修改英文模板中的路径

    • 打开 /en/templets/default/ 下的所有模板文件(如 index.htm, list.htm, article_artlist.htm 等)。
    • 修改所有站内链接:将像 {dede:global.cfg_cmsurl/}/ 这样的链接前缀,修改为 /en/
      • 例如
        • 原始链接:{dede:field name='arcurl'/}
        • 在列表页和内容页,织梦会自动生成正确路径,所以这里主要修改的是像首页、栏目页等固定链接。
        • 更稳妥的方法是,在模板中找到所有指向首页、栏目页、专题页的链接,手动加上 /en/ 前缀。
        • 推荐做法:在模板的 <head> 部分或公共头部文件(如 head.htm)中,为所有相对路径添加一个基础路径 <base href="/en/" />,这样,模板中所有相对链接都会以 /en/ 为基准。
  3. 修改模板标签以调用对应栏目

    • 这是最关键的一步,你的模板需要能够动态调用当前语言下的栏目。
    • 假设你的栏目结构是
      • 中文新闻栏目ID是 5
      • 英文新闻栏目ID是 6
    • 在首页模板 (index.htm) 中调用新闻列表
      • 错误做法:写死 {dede:arclist typeid='5' ...},因为这只能调用中文新闻。
      • 正确做法:使用PHP判断当前路径,然后调用不同的栏目ID。
    {dede:php}
    // 获取当前请求的URI
    $current_uri = $_SERVER['REQUEST_URI'];
    // 判断是否在英文目录下
    if (strpos($current_uri, '/en/') !== false) {
        // 英文站点,调用英文新闻栏目ID (假设为6)
        $en_news_id = 6;
        $typeid = $en_news_id;
    } else {
        // 中文站点,调用中文新闻栏目ID (假设为5)
        $cn_news_id = 5;
        $typeid = $cn_news_id;
    }
    {/dede:php}
    {dede:arclist typeid='$typeid' titlelen='40' row='5'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
    {/dede:arclist}
    • 对其他模板进行类似修改:在 list.htm (列表页) 和 article.htm (内容页) 中,你也需要使用类似的PHP代码来确保面包屑导航、相关文章、上一篇/下一篇等功能都指向正确的语言栏目。
  4. 创建独立的语言首页模板

    • 你可以为英文站点创建一个完全不同的首页模板,en_index.htm
    • 修改 /en/index.php 文件,让它加载这个新模板:
      // /en/index.php
      require_once(dirname(__FILE__)."/include/common.inc.php");
      require_once(DEDETEMPLATE.'/default/en_index.htm');
      exit();
    • 这样,当用户访问 /en/ 时,就会显示 en_index.htm 模板。

第五步:修改系统配置

  1. 修改英文站点的 common.inc.php

    • 打开 /en/include/common.inc.php 文件。

    • 找到 $cfg_cmspath$cfg_cmsurl 这两行。

    • 将它们的值修改为英文站点的路径:

      // 修改前
      // $cfg_cmspath = '/wwwroot';
      // $cfg_cmsurl = 'http://www.yourdomain.com';
      // 修改后
      $cfg_cmspath = '/wwwroot/en'; // 指向英文站点的物理路径
      $cfg_cmsurl = 'http://www.yourdomain.com/en'; // 指向英文站点的URL
  2. 设置默认首页

    • 登录你的服务器控制面板(如 cPanel)。
    • 进入“索引管理”或“默认文档”设置。
    • 确保首页文件顺序是 index.php,织梦会通过 index.php 来加载对应的模板。

第六步:添加语言切换按钮

在你的网站模板(最好是头部或底部模板,如 head.htmfooter.htm)中,添加一个语言切换链接。

<div class="language-switcher">
    <a href="/">中文</a> | 
    <a href="/en/">English</a>
</div>

这样,用户就可以轻松地在两个语言版本之间切换了。


总结与注意事项

  • 维护成本:这种方法的缺点是,当你需要更新模板或进行系统升级时,可能需要在中文和英文两个站点上分别操作(如果核心文件没有共享的话)。
  • URL结构:你的网站URL会变成 www.yourdomain.com/en/...,这是一种清晰且SEO友好的多语言URL结构。
  • SEO优化:记得在后台为每个栏目和文章设置正确的 titlekeywordsdescription要填写英文的SEO标签。
  • 图片和附件:上传的图片和附件会存放在 uploads 文件夹中,两个站点共享,没有问题。
  • 表单等Plus功能:如果你使用了Plus目录下的表单(如反馈、会员注册等),它们的提交地址也需要指向对应语言的目录,你可能需要为英文站点复制一份 plus 目录下的文件,并修改其中的路径。

虽然这个过程比较繁琐,但一旦完成,你就拥有了一个功能完整、易于管理的双语织梦网站,耐心按照步骤操作,你一定能成功!

-- 展开阅读全文 --
头像
织梦CMS站内搜索模块如何优化提升搜索精准度?
« 上一篇 昨天
织梦网上传照片为何总是很小?
下一篇 » 昨天

相关文章

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

目录[+]