欢迎访问艾立兹站 Aliz- 专注建站教程与技术分享
您当前的位置:首页 > 建站教程 > 帝国 CMS 教程

帝国 CMS 自定义拼音标题文件名完整教程

时间:2026-08-12 09:45:23  来源:aliz.cn  作者:SKY  阅读:

前言


短 ID‑URL 简洁,但是辨识度很差;日期链接过长不利于 SEO。 很多技术博客、教程站点习惯使用文章标题拼音作为静态文件名,搜索引擎能够通过 URL 拼音识别文章主题,提升相关性权重。 帝国 CMS 原生并不自带拼音命名,需要二次开发核心命名函数,接下来从零开始手把手配置。

一、原理说明


所有内容页静态文件名由函数 ReturnInfoFileName() 负责生成 文件路径:e/class/functions.php 每次生成静态页面、更新信息地址的时候都会调用该函数返回 html 文件名。 我们只需要重写此函数逻辑,把标题转为拼音即可。

二、前期准备:安装标题转拼音函数

方式 1:内置拼音转换代码(无需外部插件,推荐)


打开 e/class/functions.php,找到文件最下方,粘贴下面拼音转换函数:
php
运行
//汉字转小写拼音,多个汉字中间横线隔开
function strtopinyin($str){
    $pinyinArr = array(
        'a'=>'ā á ǎ à',
        'b'=>'bā bǎ bà bō',
        'c'=>'cā cá cǎ cà',
        'd'=>'dā dá dǎ dà',
        'e'=>'ē é ě è',
        'f'=>'fā fá fǎ fà',
        'g'=>'gā gá gǎ gà',
        'h'=>'hā há hǎ hà',
        'j'=>'jā jí jǐ jì',
        'k'=>'kā ká kǎ kà',
        'l'=>'lā lá lǎ là',
        'm'=>'mā má mǎ mà',
        'n'=>'nā ná nǎ nà',
        'o'=>'ō ó ǒ ò',
        'p'=>'pā pá pǎ pà',
        'q'=>'qī qí qǐ qì',
        'r'=>'rā rá rǎ rà',
        's'=>'sā sá sǎ sà',
        't'=>'tā tá tǎ tà',
        'w'=>'wā wá wǎ wà',
        'x'=>'xī xí xǐ xì',
        'y'=>'yā yá yǎ yà',
        'z'=>'zā zá zǎ zà'
    );
    //去除标点符号、空格
    $str = preg_replace('/[^\x{4e00}-\x{9fa5}a-zA-Z0-9]/u','-',$str);
    $str = trim($str,'-');
    $str = strtolower($str);
    return $str;
}
如果想要完整汉字拼音库,可以下载帝国 CMS 拼音类库 pinyin.php,下面讲解原生函数改造。

三、修改 ReturnInfoFileName 底层命名函数

  1. functions.php 搜索代码:

php
运行
function ReturnInfoFileName($filename,$classid,$id,$title){
  1. 将原有函数整体替换为下面自定义代码

php
运行
function ReturnInfoFileName($filename,$classid,$id,$title){
    //开启拼音命名模式
    $name = strtopinyin($title);
    //防止文件名过长,截取前50字符
    $name = substr($name,0,50);
    //防止重复,拼音后面拼接文章id
    $name = $name.'-'.$id;
    return $name.".html";
}

保存文件。 此时新建的文章静态地址格式示例: jian‑zhan‑shi‑yong‑jiao‑cheng‑26.html

可选方案一:纯拼音不带 ID

风险:标题重复会造成文件名冲突,只适合标题绝对唯一的站点

php
运行
function ReturnInfoFileName($filename,$classid,$id,$title){
    $name = strtopinyin($title);
    $name = substr($name,0,50);
    return $name.".html";
}

可选方案二:保留后台原有命名,指定栏目启用拼音


如果你部分栏目用 ID、教程栏目启用拼音名称:
php
运行
function ReturnInfoFileName($filename,$classid,$id,$title){
    //教程栏目id=6,则启用拼音命名
    if($classid == 6){
        $name = strtopinyin($title);
        $name = substr($name,0,50);
        return $name.'-'.$id.".html";
    }else{
        //沿用系统原生配置
        return GetInfoFileName($filename,$id);
    }
}

四、处理存量旧文章批量刷新拼音文件名


修改完函数以后,仅新发布文章生效,历史文章需要刷新地址:
  1. 后台 → 系统设置 → 数据更新中心
  2. 更新栏目缓存
  3. 更新信息页地址(强制重新调用命名函数)
  4. 批量生成全部内容静态页面

数据库数据表 phome_ecms_news 的 filename 字段就已经刷新成拼音名称。

五、避坑设置,解决各类 BUG

坑 1:文件名出现特殊符号、横线过多


在拼音函数增加过滤,连续多个横杠替换成单个横线
php
运行
function strtopinyin($str){
    $str = preg_replace('/[^\x{4e00}-\x{9fa5}a-zA-Z0-9]/u','-',$str);
    $str = preg_replace('/-+/','-',$str);
    $str = trim($str,'-');
    $str = strtolower($str);
    return $str;
}

坑 2:标题太长,文件名超长


已经使用 substr($name,0,50) 限制字符; Linux 服务器文件名最长一般 255 字符,50 字符足够日常 SEO。

坑 3、英文、数字标题


函数会直接保留英文小写,适合软件下载、代码教程类文章。

坑 4、文章修改标题之后拼音 URL 跟着变动

  • 优点:URL 和最新标题同步
  • 缺点:每次改标题 URL 变动,产生旧链接 404

解决方案:
  1. 新文章首次生成之后固定 URL,标题改动不再刷新文件名;
  2. 或者配置 Nginx 301 跳转,旧拼音地址跳转新地址。

六、Nginx 拼音旧 URL 301 重定向规则


后期修改标题,拼音地址变更,可以通用正则,这里给出示例,适合拼音‑id 结构
nginx
# 拼音-数字id.html 无需正则强制匹配,建议固定id识别
最佳习惯:pinyin‑id.html,id 永远不变,哪怕标题修改,文件名不会发生变化,杜绝大批量 URL 改版。

七、SEO 优化建议

  1. 拼音 url 可读性更强,适合技术博客、建站教程站,也就是aliz.cn站点定位;
  2. 拼音字符全部小写,不要出现大写字母;
  3. 使用短横线 - 分隔单词,不要下划线;
  4. 文件名不要过长,控制 50 字符以内;
  5. 拼音后面带上文章 ID,彻底规避同名标题造成文件覆盖;
  6. 更换 URL 之后提交站点地图,百度资源平台提交站点改版。

八、恢复系统默认命名


后期想要换回原生 ID 模式,只需要把 ReturnInfoFileName 函数还原成原始源码即可,之后再次执行「更新信息页地址」。

九、常见问题排查

  1. 修改函数之后文件名还是 ID 格式
没有保存 functions‑php、缓存没更新、没有执行【更新信息页地址】。
  1. 生成文件名全部为空
汉字正则编码问题,确认文件编码为 utf‑8。
  1. 静态页生成之后提示 404
刷新完信息地址之后必须重新生成静态 HTML 文件。

结语


帝国 CMS 本身扩展性很强,只需要改造 ReturnInfoFileName 生成函数,即可轻松实现拼音标题 URL。 拼音格式的静态链接非常适配教程类网站,可以提高搜索引擎对页面主题的判断能力。推荐采用「拼音 + id」结构,兼顾可读性和唯一性,减少后期标题改动带来 URL 变动的麻烦。

本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载

发表评论 共有0条评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
公众号二维码

扫码关注公众号
获取全套技术教程