帝国 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 底层命名函数
- 在
functions.php搜索代码:
php
运行
function ReturnInfoFileName($filename,$classid,$id,$title){
- 将原有函数整体替换为下面自定义代码
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);
}
}
四、处理存量旧文章批量刷新拼音文件名
修改完函数以后,仅新发布文章生效,历史文章需要刷新地址:
- 后台 → 系统设置 → 数据更新中心
- 更新栏目缓存
- 更新信息页地址(强制重新调用命名函数)
- 批量生成全部内容静态页面
数据库数据表
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
解决方案:
- 新文章首次生成之后固定 URL,标题改动不再刷新文件名;
- 或者配置 Nginx 301 跳转,旧拼音地址跳转新地址。
六、Nginx 拼音旧 URL 301 重定向规则
后期修改标题,拼音地址变更,可以通用正则,这里给出示例,适合拼音‑id 结构
nginx
# 拼音-数字id.html 无需正则强制匹配,建议固定id识别
最佳习惯:pinyin‑id.html,id 永远不变,哪怕标题修改,文件名不会发生变化,杜绝大批量 URL 改版。
七、SEO 优化建议
- 拼音 url 可读性更强,适合技术博客、建站教程站,也就是aliz.cn站点定位;
- 拼音字符全部小写,不要出现大写字母;
- 使用短横线
-分隔单词,不要下划线; - 文件名不要过长,控制 50 字符以内;
- 拼音后面带上文章 ID,彻底规避同名标题造成文件覆盖;
- 更换 URL 之后提交站点地图,百度资源平台提交站点改版。
八、恢复系统默认命名
后期想要换回原生 ID 模式,只需要把
ReturnInfoFileName 函数还原成原始源码即可,之后再次执行「更新信息页地址」。
九、常见问题排查
- 修改函数之后文件名还是 ID 格式
没有保存 functions‑php、缓存没更新、没有执行【更新信息页地址】。
- 生成文件名全部为空
汉字正则编码问题,确认文件编码为 utf‑8。
- 静态页生成之后提示 404
刷新完信息地址之后必须重新生成静态 HTML 文件。
结语
帝国 CMS 本身扩展性很强,只需要改造
ReturnInfoFileName 生成函数,即可轻松实现拼音标题 URL。 拼音格式的静态链接非常适配教程类网站,可以提高搜索引擎对页面主题的判断能力。推荐采用「拼音 + id」结构,兼顾可读性和唯一性,减少后期标题改动带来 URL 变动的麻烦。
本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载
发表评论
共有0条评论