使用现成插件(最简单、推荐新手)
这是最简单、最安全的方法,有现成的开发者已经制作好了插件,我们直接下载安装即可。

优点:
- 操作简单:无需修改核心文件,后台一键安装。
- 安全稳定:插件独立于核心系统,升级 DedeCMS 时通常不受影响。
- 功能丰富:一些插件除了去 ID,还支持自定义拼音分隔符、强制小写、处理多音字等。
缺点:
- 依赖第三方:需要找到可靠、无后门的插件。
操作步骤:
-
下载插件
- 访问 DedeCMS 官方论坛、模板堂、或一些可靠的 DedeCMS 资源网站。
- 搜索关键词 “DedeCMS 拼音去ID插件” 或 “DedeCMS 拼音生成器”。
- 下载一个评价好、下载量高的插件包(通常是
.zip格式)。
-
上传安装
- 解压下载的插件包,你会看到一个名为
pinyin的文件夹。 - 通过 FTP 或主机文件管理器,将这个
pinyin文件夹上传到你的网站根目录/dede/下。 - 登录你的 DedeCMS 后台,在左侧菜单栏找到 “系统” -> “插件管理”。
- 在插件列表中,你应该能看到新上传的拼音插件,点击 “安装” 或 “启用”。
- 解压下载的插件包,你会看到一个名为
-
配置和使用
- 安装成功后,通常会在 “系统” 菜单下出现一个新的选项,如 “拼音管理” 或 “栏目/文档拼音设置”。
- 进入设置页面,你可以配置拼音的生成规则,例如选择 “栏目名称” 或 ”,并确保规则中不包含 ID。
- 重新生成你需要的栏目或文档的拼音即可。
修改核心代码(最彻底、推荐开发者)
如果你对代码比较熟悉,或者希望系统更“干净”,不依赖插件,可以直接修改 DedeCMS 的核心代码,这种方法能从根本上解决问题。

注意: 修改核心文件前,务必备份!务必备份!务必备份! 以防万一。
优点:
- 一劳永逸:修改一次,永久生效,无需每次都手动生成。
- 系统纯净:不安装任何第三方插件,减少潜在风险。
- 完全自定义:可以按照自己的逻辑修改拼音生成规则。
缺点:
- 操作复杂:需要手动修改文件,有出错风险。
- 升级麻烦:未来如果升级 DedeCMS,这些修改会被覆盖,需要重新修改。
操作步骤:
拼音的生成逻辑主要在两个文件中,我们需要修改它们。
步骤 1:修改栏目拼音规则 (dede/catalog_add.php 和 dede/catalog_edit.php)
栏目拼音是在添加或编辑栏目时生成的。
-
打开文件:
/dede/catalog_add.php -
找到代码:搜索
pinyin关键字,找到生成拼音的相关代码段,通常在文件末尾,类似这样:if($dopost=='save') { // ... 其他保存逻辑 ... $pinyin = GetPinyin($typename); $query = "INSERT INTO `#@__arctype` (`typename`, `typedir`, `isdefault`, `defaultname`, `issend`, `arcrank`, `channeltype`, `tempindex`, `templist`, `templistdt`, `temppage`, `temparticle`, `namerule`, `namerule2`, `position`, `description`, `keywords`, `seotitle`, `moresite`, `siteurl`, `sitepath`, `modname`, `corank`, `ishidden`, `cross`, `content`, `smalltypes`, `letter`) VALUES ('$typename', '$typedir', '$isdefault', '$defaultname', '$issend', '$arcrank', '$channeltype', '$tempindex', '$templist', '$templistdt', '$temppage', '$temparticle', '$namerule', '$namerule2', '$position', '$description', '$keywords', '$seotitle', '$moresite', '$siteurl', '$sitepath', '$modname', '$corank', '$ishidden', '$cross', '$content', '$smalltypes', '$letter')"; $dsql->ExecuteNoneQuery($query); // ... } -
修改代码:找到
GetPinyin($typename)这一行,将其修改为GetPinyin($typename, 0),这里的第二个参数0就是控制是否添加 ID 的,如果默认是1,就改成0,查看GetPinyin函数的定义(通常在include/helpers/extend.helper.php),确认其参数含义。 -
同样修改:用同样的方法修改
/dede/catalog_edit.php文件中的相关代码。
步骤 2:修改文档(文章)拼音规则 (dede/article_add.php 和 dede/article_edit.php)
文档拼音的生成逻辑和栏目类似。
-
打开文件:
/dede/article_add.php -
找到代码:搜索
pinyin或GetPinyin,找到生成文章拼音的代码。 -
修改代码:同样地,将
GetPinyin($title)修改为GetPinyin($title, 0)。 -
同样修改:用同样的方法修改
/dede/article_edit.php文件。
步骤 3:检查并修改拼音生成核心函数 (include/helpers/extend.helper.php)
这是最关键的一步,确保 GetPinyin 函数本身支持“去 ID”模式。
-
打开文件:
/include/helpers/extend.helper.php -
找到函数:搜索
function GetPinyin,找到这个函数的定义。 -
分析函数:查看函数的参数列表和内部逻辑,一个典型的
GetPinyin函数可能如下:function GetPinyin($str, $ishead=0, $isclose=1) { // ... 一些初始化代码 ... if($ishead==1) // 只取首字母 { // ... } else // 取全拼 { $restr = ""; if($isclose==1) // 如果开启了某种模式 { // ... 可能会在这里拼接 ID ... } for($i=0;$i<strlen($str);$i++) { // ... 逐个字符转换成拼音 ... $restr .= $pys[$str[$i]]; } // ... 可能在这里拼接 ID ... $restr .= $id; // <--- 这里就是拼接 ID 的地方! return $restr; } } -
修改逻辑:找到拼接 ID 的代码(如
$restr .= $id;),并将其注释掉或删除,利用第二个参数$ishead来实现去 ID 的功能,可以这样改造:// 修改函数定义,增加一个新参数 $addid 来控制是否添加ID function GetPinyin($str, $ishead=0, $isclose=1, $addid=1) { // ... 原有的拼音转换逻辑 ... $restr = ""; // 存储最终拼音结果 // ... 循环转换 $str 为拼音,存入 $restr ... // (这里省略了原有的拼音转换循环代码) // 根据新参数 $addid 来决定是否添加ID if($addid) { // 获取当前记录的ID (这个ID需要作为参数传入,或者在调用时获取) // $restr .= $id; // 注释掉或删除这行 } return $restr; }注意:由于修改核心函数比较复杂,更推荐的做法是直接找到并删除生成 ID 的那一行代码,然后在调用它的地方(如
article_add.php)通过传参来控制,如果原函数不支持传参控制,就直接删除拼接 ID 的代码。
总结与建议
| 方案 | 优点 | 缺点 | 推荐人群 |
|---|---|---|---|
| 插件 | 简单、安全、功能多 | 依赖第三方 | 绝大多数用户,新手首选 |
| 改代码 | 彻底、纯净、完全自定义 | 复杂、有风险、升级覆盖 | 开发者、有代码基础、追求极致的用户 |
给您的最终建议:
- 如果您只是普通网站管理员,强烈推荐您使用 方案一(插件),它省时省力,安全可靠,能完美解决问题。
- 如果您是开发者,或者您的网站对纯净度要求极高,并且不介意在每次升级 DedeCMS 后重新修改代码,那么可以选择 方案二(改代码),它能从根本上解决问题。
无论选择哪种方法,操作前都请务必备份您的网站文件和数据库!
