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

直接修改核心文件(最直接,但升级会覆盖)
这是最直接的方法,适用于不经常升级 DedeCMS 的项目。
步骤 1:修改文章内容页和文章列表页分页
这个文件控制着文章内容页 (article_article.htm)、相关文章页等场景下的分页。
-
打开文件: 使用 FTP 或文件管理器,打开
include/arc.archives.class.php。 -
查找并修改字符串: 在文件中搜索以下中文关键词,并将其替换为英文。
(图片来源网络,侵删)查找并替换:
首页->First上一页->Previous下一页->Next末页->Last共 {PageNo} 页->Total {PageNo} pagesGo 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) 的分页。

-
打开文件: 打开
include/arc.listview.class.php。 -
查找并修改字符串: 这个文件中的分页逻辑和
arc.archives.class.php非常相似,同样需要替换中文关键词。查找并替换:
首页->First上一页->Previous下一页->Next末页->Last共 {PageNo} 页->Total {PageNo} pagesGo to->Go to页->Page
具体操作:
- 在
arc.listview.class.php中搜索GetPageList函数。 - 你会发现和上一个文件几乎一样的代码结构,进行同样的替换即可。
使用语言包(推荐,更规范,升级无忧)
这是更专业和推荐的方法,通过创建一个简单的“语言包”来覆盖默认设置,这样即使未来升级 DedeCMS,你的修改也不会被覆盖。
步骤 1:创建语言文件
-
创建目录: 在
/include/目录下创建一个名为lang/的文件夹,如果已存在则跳过。- 路径:
/include/lang/
- 路径:
-
创建语言文件: 在
/include/lang/目录下创建一个名为english.php的文件。 -
编写语言文件内容: 打开新创建的
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.php 和 arc.listview.class.php,让它们在加载时包含我们创建的语言文件。
-
修改
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数组中。
- 在文件的最顶部,在
-
修改
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 中的值。
-
修改
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> "; -
修改
arc.archives.class.php中的GetPageListST函数: 同样,找到$maininfo = "共{$totalpage}页";,修改为:// 修改后的代码 $maininfo = $lang['page_total'];
-
对
arc.listview.class.php进行完全相同的修改: 因为arc.listview.class.php的代码结构类似,你需要在其中也找到GetPageList和GetPageListST函数,并用$lang变量替换掉硬编码的中文。
总结与推荐
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 直接修改 | 简单直接,一步到位。 | 升级 DedeCMS 后,所有修改会被覆盖,需要重新修改。 | ⭐⭐ (适合临时或不升级的项目) |
| 语言包 | 规范、可维护、升级无忧,符合软件国际化标准。 | 步骤稍多,需要修改核心文件来加载语言包。 | ⭐⭐⭐⭐⭐ (强烈推荐,尤其是长期项目) |
最终建议: 为了项目的长期稳定性和可维护性,强烈建议您使用 方法二,虽然前期需要多几个步骤,但它能确保您在未来升级 DedeCMS 时,不会丢失任何自定义的修改,是最佳实践。
