当前位置:首页 > 行业动态 > 正文

如何用dedecms实现拼音显示文章标题页文件名?

/include/arc.archives.class.php文件中,找到 GetFileName函数,添加以下代码:,,“ php,$filename = $this>ConvertCharset($filename, 'UTF8', 'GBK');,$filename = $this>Pinyin($filename);,` ,,在/include/helpers/helper.main.helper.php 文件中,添加以下代码:,,` php,function Pinyin($string) {, $result = '';, $string = preg_replace("/[azAZ]/", "", $string); // 去掉英文字母, $string = iconv('UTF8', 'gbk', $string); // 转换编码, $len = strlen($string);, for ($i = 0; $i= ord('a') && ord($char) true,, CURLOPT_HEADER => false,, CURLOPT_FOLLOWLOCATION => true,, CURLOPT_MAXREDIRS => 2,, CURLOPT_TIMEOUT => 30, );, $ch = curl_init();, curl_setopt_array($ch, $opts);, curl_setopt($ch, CURLOPT_URL, $url);, $result = curl_exec($ch);, curl_close($ch);, return $result;,},“,,这样,文章标题页文件名就会以拼音形式显示。

在DedeCMS中,实现文章标题页文件名以拼音显示的方法如下:

1、修改文章命名规则:进入后台的网站栏目管理,找到需要修改的栏目,点击“高级选项”,在文章命名规则中,将默认的{typedir}/{Y}{M}{D}/{aid}.html修改为{typedir}/{pinyin}.html,这样设置后,文章的URL路径将以标题的拼音来显示。

2、去除不必要的后缀:按照上述设置后,可能会发现生成的文章路径后面多了一个下划线和数字(如zhanyouwangshishenmea_1.html),为了去掉这个多余的部分,需要修改文件include/inc_channel_unit_function.php,在这个文件中,找到大约50多行的地方,有一行代码是$articleRule = str_replace("{pinyin}",GetPinyin($title)."_".$aid,$articleRule);,将其中的."_".$aid删除即可。

3、修改英文单词间的连接符:如果文章标题是英文的,系统默认会在单词之间加上下划线(_),这对SEO并不友好,为了将其改为连字符(),需要修改文件include/inc/inc_fun_funAdmin.php,在文件中,找到以下代码段:

for($i=0;$i<$slen;$i++){
if(ord($str[$i])>0x80)
{
$c = $str[$i].$str[$i+1];
$i++;
if(isset($pinyins[$c])){
if($ishead==0) $restr .= $pinyins[$c];
else $restr .= $pinyins[$c][0];
}else $restr .= "_";
}else if( eregi("[az09]",$str[$i]) ){ $restr .= $str[$i]; }
else{ $restr .= "_"; }
}

将其中的"_"替换为"",并添加相应的逻辑以确保不会出现连续的连字符或在字符串末尾出现连字符。

通过以上步骤,就可以实现在DedeCMS中让文章标题页的文件名以拼音形式显示。

FAQs

1、为什么修改后的文章路径后面会有多余的下划线和数字?

答:这是因为DedeCMS在生成拼音路径时,会默认添加一个下划线和文章ID作为区分,如果不希望显示这个多余的部分,可以通过修改include/inc_channel_unit_function.php文件中的相关代码来实现。

2、如何确保英文标题中的单词之间使用连字符而不是下划线?

答:需要修改include/inc/inc_fun_funAdmin.php文件,将处理拼音的代码段中的下划线替换为连字符,并确保不会出现连续的连字符或在字符串末尾出现连字符。

| 步骤 | 说明 | 代码示例 |

| | | |

| 1. 准备工作 | 确保您的 Dedecms 网站已经安装并配置好,并且安装了拼音插件(如“Dede拼音”插件),如果没有安装,请先安装插件。 | 无 |

| 2. 添加拼音字段 | 在文章模型中添加一个用于存储文章标题拼音的字段,这通常是在后台管理系统中通过模型管理来完成的。 | 在模型管理中添加一个名为“拼音”的字段,类型为“单行文本”。 |

| 3. 生成拼音 | 在文章发布的钩子函数中,调用拼音插件生成的函数来生成文章标题的拼音,并存储到新添加的字段中。 | “`php

function articleArcAddHandle(&$fields, &$addData) {

if (!isset($addData[‘title_pinyin’])) {

$addData[‘title_pinyin’] = Pinyin::getPinyin($addData[‘title’]);

}

“`

| 4. 修改文件名生成逻辑 | 在生成文章标题页文件名的地方,使用拼音字段来生成文件名,通常这个逻辑在文章发布或修改时触发。 | “`php

function articleArcAddHandle(&$fields, &$addData) {

// …

$addData[‘arc Mid’] = Pinyin::getPinyin($addData[‘title’]);

// …

“`

| 5. 更新模板文件 | 在文章标题页的模板文件中,修改文件名引用,使其使用生成的拼音,假设您的模板文件名为`article_read.htm`,那么修改如下: | “`html

{dede:field.title/}_{dede:field.title_pinyin/}

“`

| 6. 测试 | 发布或修改一篇文章,并查看生成的标题页文件名是否正确。 | 无 |

| 7. 优化 | 根据需要,优化拼音生成的逻辑,比如处理特殊字符、空格等。 | 根据实际情况调整拼音插件或自定义逻辑。 |

注意:以上代码示例假设您已经安装了名为“Pinyin”的拼音插件,并且插件提供了`getPinyin`函数来生成拼音,如果您的插件不同,请根据实际情况调整代码。

0