如何将dede分页改成英文?

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

核心思路

DedeCMS 的分页文字(如“首页”、“上一页”、“下一页”、“末页”)是硬编码在 PHP 文件中的,我们需要找到这些字符串,并将它们替换成对应的英文。

dede分页改成英文
(图片来源网络,侵删)

直接修改核心文件(最直接,但升级会覆盖)

这是最直接的方法,适用于不经常升级 DedeCMS 的项目。

步骤 1:修改文章内容页和文章列表页分页

这个文件控制着文章内容页 (article_article.htm)、相关文章页等场景下的分页。

  1. 打开文件: 使用 FTP 或文件管理器,打开 include/arc.archives.class.php

  2. 查找并修改字符串: 在文件中搜索以下中文关键词,并将其替换为英文。

    dede分页改成英文
    (图片来源网络,侵删)

    查找并替换

    • 首页 -> First
    • 上一页 -> Previous
    • 下一页 -> Next
    • 末页 -> Last
    • 共 {PageNo} 页 -> Total {PageNo} pages
    • Go to -> Go to
    • -> Page

    具体操作

    • arc.archives.class.php 中搜索 GetPageListST 函数,你会找到类似 $maininfo = "共{$totalpage}页".$tnav; 这样的代码。
    • 搜索 GetPageList 函数,你会找到 $tnav = "<a href='".$purl."start=0'>首页</a> "; 这样的代码。
    • 将这些地方的所有中文分页文字替换成英文。

    示例代码片段(修改后)

    // 在 GetPageList 函数中
    $tnav = "<a href='".$purl."start=0'>First</a> ";
    if($this->PageNo != 1)
        $tnav .= "<a href='".$purl."start=".($this->PageNo-2)."'>Previous</a> ";
    $tnav .= "<span class=\"pageinfo\">Page ".$this->PageNo." / $totalpage</span> ";
    if($this->PageNo!=$totalpage)
        $tnav.="<a href='".$purl."start=".($this->PageNo)."'>Next</a> ";
    $tnav.="<a href='".$purl."start=".($totalpage-1)."'>Last</a> ";
    // 在 GetPageListST 函数中
    $maininfo = "Total $totalpage pages";

步骤 2:修改栏目列表页分页

这个文件控制着栏目列表页 (list_*.htm) 的分页。

dede分页改成英文
(图片来源网络,侵删)
  1. 打开文件: 打开 include/arc.listview.class.php

  2. 查找并修改字符串: 这个文件中的分页逻辑和 arc.archives.class.php 非常相似,同样需要替换中文关键词。

    查找并替换

    • 首页 -> First
    • 上一页 -> Previous
    • 下一页 -> Next
    • 末页 -> Last
    • 共 {PageNo} 页 -> Total {PageNo} pages
    • Go to -> Go to
    • -> Page

    具体操作

    • arc.listview.class.php 中搜索 GetPageList 函数。
    • 你会发现和上一个文件几乎一样的代码结构,进行同样的替换即可。

使用语言包(推荐,更规范,升级无忧)

这是更专业和推荐的方法,通过创建一个简单的“语言包”来覆盖默认设置,这样即使未来升级 DedeCMS,你的修改也不会被覆盖。

步骤 1:创建语言文件

  1. 创建目录: 在 /include/ 目录下创建一个名为 lang/ 的文件夹,如果已存在则跳过。

    • 路径:/include/lang/
  2. 创建语言文件: 在 /include/lang/ 目录下创建一个名为 english.php 的文件。

  3. 编写语言文件内容: 打开新创建的 english.php 文件,粘贴以下代码:

    <?php
    if(!defined('DEDEINC'))
    {
        exit('Request Error!');
    }
    $lang['page_first'] = 'First';
    $lang['page_pre'] = 'Previous';
    $lang['page_next'] = 'Next';
    $lang['page_last'] = 'Last';
    $lang['page_total'] = 'Total {PageNo} pages';
    $lang['page_goto'] = 'Go to';
    $lang['page_page'] = 'Page';
    ?>
    • 注意:这里的键名(如 $lang['page_first'])是我们自定义的,我们需要在核心文件中引用它们。

步骤 2:修改核心文件以加载语言包

我们需要修改 arc.archives.class.phparc.listview.class.php,让它们在加载时包含我们创建的语言文件。

  1. 修改 arc.archives.class.php

    • 在文件的最顶部,在 <?php 之后,require_once(DEDEROOT.'/data/config.php'); 之后,添加以下代码:
      // Load English language pack
      $english_lang = include_once(DEDEINC.'/lang/english.php');
      if(is_array($english_lang)) {
          $lang = array_merge($lang, $english_lang);
      }
    • 解释:这行代码会加载我们创建的 english.php 文件,并将其中的变量合并到 DedeCMS 全局的 $lang 数组中。
  2. 修改 arc.listview.class.php

    • 同样,在这个文件的最顶部,<?php 之后,添加和上面完全一样的代码:
      // Load English language pack
      $english_lang = include_once(DEDEINC.'/lang/english.php');
      if(is_array($english_lang)) {
          $lang = array_merge($lang, $english_lang);
      }

步骤 3:在模板文件中使用语言变量

最关键的一步来了,你需要修改你的模板文件(如 article_article.htm, list_*.htm),将硬编码的中文分页标签替换成 DedeCMS 的分页标签,这些标签会自动使用 $lang 变量中的值。

错误的做法(不要做): 在模板里直接写 {dede:pagelist listitem='pre,next'/},然后期望它会自动变成英文,你需要的是让这个标签输出英文

正确的做法(推荐): DedeCMS 的 {dede:pagelist} 标签本身不支持直接使用 $lang 变量,最简单、最彻底的方法是再次修改核心文件,让它们输出 $lang 中的值。

  1. 修改 arc.archives.class.php 中的 GetPageList 函数: 找到生成分页字符串的代码,

    // 原来的代码可能是这样
    // $tnav = "<a href='".$purl."start=0'>首页</a> ";
    // $tnav .= "<a href='".$purl."start=".($this->PageNo-2)."'>上一页</a> ";
    // ...

    将其修改为:

    // 修改后的代码
    $tnav = "<a href='".$purl."start=0'>".$lang['page_first']."</a> ";
    if($this->PageNo != 1)
        $tnav .= "<a href='".$purl."start=".($this->PageNo-2)."'>".$lang['page_pre']."</a> ";
    $tnav .= "<span class=\"pageinfo\">".$lang['page_total']."</span> ";
    if($this->PageNo!=$totalpage)
        $tnav.="<a href='".$purl."start=".($this->PageNo)."'>".$lang['page_next']."</a> ";
    $tnav.="<a href='".$purl."start=".($totalpage-1)."'>".$lang['page_last']."</a> ";
  2. 修改 arc.archives.class.php 中的 GetPageListST 函数: 同样,找到 $maininfo = "共{$totalpage}页";,修改为:

    // 修改后的代码
    $maininfo = $lang['page_total'];
  3. arc.listview.class.php 进行完全相同的修改: 因为 arc.listview.class.php 的代码结构类似,你需要在其中也找到 GetPageListGetPageListST 函数,并用 $lang 变量替换掉硬编码的中文。


总结与推荐

方法 优点 缺点 推荐度
直接修改 简单直接,一步到位。 升级 DedeCMS 后,所有修改会被覆盖,需要重新修改。 ⭐⭐ (适合临时或不升级的项目)
语言包 规范、可维护、升级无忧,符合软件国际化标准。 步骤稍多,需要修改核心文件来加载语言包。 ⭐⭐⭐⭐⭐ (强烈推荐,尤其是长期项目)

最终建议: 为了项目的长期稳定性和可维护性,强烈建议您使用 方法二,虽然前期需要多几个步骤,但它能确保您在未来升级 DedeCMS 时,不会丢失任何自定义的修改,是最佳实践。

-- 展开阅读全文 --
头像
外部调用dede文章,如何实现?
« 上一篇 04-21
dede论坛如何实现自适应布局?
下一篇 » 04-21

相关文章

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

目录[+]