有的织梦站长啊,看到 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步再改一次,这个是选做的,只做在用内容模型就行了。

温馨提示

内容由用户共同创建和维护,并不代表织梦爱好者论坛立场!
建议您独自对内容进行评估,核实并咨询相关的专业人士!

织梦开发教程:织梦将文章标题拼音作为文件名织梦开发教程:织梦将文章标题拼音作为文件名织梦开发教程:织梦将文章标题拼音作为文件名织梦开发教程:织梦将文章标题拼音作为文件名织梦开发教程:织梦将文章标题拼音作为文件名+13  13 个回复 | 最后更新于 2025-01-19
该部分是隐藏区

登录后查看回复

该部分是隐藏区

登录后方可回帖

Loading...