有的织梦站长啊,看到 WordPress 的将文章标题拼音作为文件名。说这种收录效果很好,就想问织梦程序应该怎么实现。其实,织梦用自定义文件名就能实现了。
类似效果:http://localhost/news/Hello-rang-ge-ge-bang-ni-yan-yan-huo.html
教程开始
方法一、想实现这种效果,有两种方法,一种是直接改文章命名规则;
后台-网站栏目管理-修改高级选项-文章命名规则:{typedir}/{aid}.html 改为
{typedir}/{pinyin}.html
但是,这样的话,就没有斜杠隔开了。说句实话,达不到效果,还十分滴难看!
方法二、用自定义函数的方法,这个方法真的是一比一精仿啊!
1.1、如果是 DedeBIZ :打开 /system/extend.func.php 在它最下面加入
1.2、如果是 DedeCMS :打开 /include/extend.func.php 在它最下面加入
function PinYinTitle($title) { $newStr = ''; $len = mb_strlen($title); $isEnglishWord = false; // 用于标记是否处于英文单词内部 for ($i = 0; $i < $len; $i++) { $char = mb_substr($title, $i, 1); if (preg_match('/[a-zA-Z]/', $char)) { if (!$isEnglishWord && $newStr!= '') { $newStr.= '-'; } $isEnglishWord = true; $newStr.= $char; } elseif (preg_match('/[\x{4e00}-\x{9fa5}]/u', $char)) { if ($isEnglishWord) { $newStr.= '-'; $isEnglishWord = false; } if ($newStr!= '') { $newStr.= '-'; } $newStr.= GetPinyin(stripslashes($char)); } else { continue; } // 在每次字符处理完后,判断是否处于英文单词结尾且下一个字符不是英文字母,若是则添加连接符 if ($isEnglishWord && $i < $len - 1) { $nextChar = mb_substr($title, $i + 1, 1); if (!preg_match('/[a-zA-Z]/', $nextChar)) { $newStr.= '-'; $isEnglishWord = false; } } } $newStr = str_replace(array('_','--',),array('-','-'),$newStr); return str_replace('--','-', $newStr); }
2.1、如果是 DedeBIZ :打开 /admin/article_add.php 搜索
2.2、如果是 DedeCMS :打开 /dede/article_add.php 搜索
//保存到主表
在它后面敲个回车,然后在它下面加入
$filename = PinYinTitle($title);
完成,就是这么的简单。当然了,如果你还有用其它内容模型,也是同样的改法。
article_add.php 文章
album_add.php 图集
archives_add.php 商品
soft_add.php 软件
spec_add.php 专题
archives_sg_add.php 单表
上面的这些,按照以上第2.1步再改一次,这个是选做的,只做在用内容模型就行了。
登录后方可回帖