dede5.7拼音去id怎么实现?

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

使用现成插件(最简单、推荐新手)

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

dede5.7 拼音 去掉id
(图片来源网络,侵删)

优点:

  • 操作简单:无需修改核心文件,后台一键安装。
  • 安全稳定:插件独立于核心系统,升级 DedeCMS 时通常不受影响。
  • 功能丰富:一些插件除了去 ID,还支持自定义拼音分隔符、强制小写、处理多音字等。

缺点:

  • 依赖第三方:需要找到可靠、无后门的插件。

操作步骤:

  1. 下载插件

    • 访问 DedeCMS 官方论坛、模板堂、或一些可靠的 DedeCMS 资源网站。
    • 搜索关键词 “DedeCMS 拼音去ID插件”“DedeCMS 拼音生成器”
    • 下载一个评价好、下载量高的插件包(通常是 .zip 格式)。
  2. 上传安装

    • 解压下载的插件包,你会看到一个名为 pinyin 的文件夹。
    • 通过 FTP 或主机文件管理器,将这个 pinyin 文件夹上传到你的网站根目录 /dede/ 下。
    • 登录你的 DedeCMS 后台,在左侧菜单栏找到 “系统” -> “插件管理”
    • 在插件列表中,你应该能看到新上传的拼音插件,点击 “安装”“启用”
  3. 配置和使用

    • 安装成功后,通常会在 “系统” 菜单下出现一个新的选项,如 “拼音管理”“栏目/文档拼音设置”
    • 进入设置页面,你可以配置拼音的生成规则,例如选择 “栏目名称”,并确保规则中不包含 ID。
    • 重新生成你需要的栏目或文档的拼音即可。

修改核心代码(最彻底、推荐开发者)

如果你对代码比较熟悉,或者希望系统更“干净”,不依赖插件,可以直接修改 DedeCMS 的核心代码,这种方法能从根本上解决问题。

dede5.7 拼音 去掉id
(图片来源网络,侵删)

注意: 修改核心文件前,务必备份!务必备份!务必备份! 以防万一。

优点:

  • 一劳永逸:修改一次,永久生效,无需每次都手动生成。
  • 系统纯净:不安装任何第三方插件,减少潜在风险。
  • 完全自定义:可以按照自己的逻辑修改拼音生成规则。

缺点:

  • 操作复杂:需要手动修改文件,有出错风险。
  • 升级麻烦:未来如果升级 DedeCMS,这些修改会被覆盖,需要重新修改。

操作步骤:

拼音的生成逻辑主要在两个文件中,我们需要修改它们。

步骤 1:修改栏目拼音规则 (dede/catalog_add.phpdede/catalog_edit.php)

栏目拼音是在添加或编辑栏目时生成的。

  1. 打开文件/dede/catalog_add.php

  2. 找到代码:搜索 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);
        // ...
    }
  3. 修改代码:找到 GetPinyin($typename) 这一行,将其修改为 GetPinyin($typename, 0),这里的第二个参数 0 就是控制是否添加 ID 的,如果默认是 1,就改成 0,查看 GetPinyin 函数的定义(通常在 include/helpers/extend.helper.php),确认其参数含义。

  4. 同样修改:用同样的方法修改 /dede/catalog_edit.php 文件中的相关代码。

步骤 2:修改文档(文章)拼音规则 (dede/article_add.phpdede/article_edit.php)

文档拼音的生成逻辑和栏目类似。

  1. 打开文件/dede/article_add.php

  2. 找到代码:搜索 pinyinGetPinyin,找到生成文章拼音的代码。

  3. 修改代码:同样地,将 GetPinyin($title) 修改为 GetPinyin($title, 0)

  4. 同样修改:用同样的方法修改 /dede/article_edit.php 文件。

步骤 3:检查并修改拼音生成核心函数 (include/helpers/extend.helper.php)

这是最关键的一步,确保 GetPinyin 函数本身支持“去 ID”模式。

  1. 打开文件/include/helpers/extend.helper.php

  2. 找到函数:搜索 function GetPinyin,找到这个函数的定义。

  3. 分析函数:查看函数的参数列表和内部逻辑,一个典型的 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;
        }
    }
  4. 修改逻辑:找到拼接 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 后重新修改代码,那么可以选择 方案二(改代码),它能从根本上解决问题。

无论选择哪种方法,操作前都请务必备份您的网站文件和数据库!

-- 展开阅读全文 --
头像
dede如何调用当前栏目的文章数量?
« 上一篇 01-03
C语言gettickcount如何获取精确时间?
下一篇 » 01-03

相关文章

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

目录[+]