SEO-DEDE生成文章以拼音命名的方法

首先在后台网站栏目管理,高级管理更改{typedir}/{y}/{m}/{aid}.html为{typedir}/{pinyin}.html.

然后修改include文件夹下的channelunit.func.php文件里的代码.

代码如下:

//获得文件相对于主站点根目录的物理文件名(动态网址返回url)
function GetFileName

($aid,$typeid,$timetag,$title,$ismake=0,$rank=0,$namerule=”,$typedir=”,$money=0,$filename=

”)
{
global $cfg_rewrite, $cfg_cmspath, $cfg_arcdir, $cfg_special, $cfg_arc_dirname;
//没指定栏目时用固定规则(专题)
if(empty($namerule)) {
$namerule = $cfg_special.’/arc-{aid}.html’;
$typeid = -1;
}
if($rank!=0 || $ismake==-1 || $typeid==0 || $money>0)
{
//动态文章
if($cfg_rewrite == ‘Y’)
{
return $GLOBALS[“cfg_plus_dir”].”/view-“.$aid.’-1.html’;
}
else
{
return $GLOBALS[‘cfg_phpurl’].”/view.php?aid=$aid”;
}
}
else
{
$articleDir = MfTypedir($typedir);
$articleRule = strtolower($namerule);
if($articleRule==”)
{
$articleRule = strtolower($GLOBALS[‘cfg_df_namerule’]);
}
if($typedir==”)
{
$articleDir = $GLOBALS[‘cfg_cmspath’].$GLOBALS[‘cfg_arcdir’];
}
$dtime = GetDateMk($timetag);
list($y,$m,$d) = explode(‘-‘,$dtime);
$arr_rpsource = array(‘{typedir}’,'{y}’,'{m}’,'{d}’,'{timestamp}’,'{aid}’,'{cc}’);
$arr_rpvalues = array($articleDir,$y, $m, $d, $timetag, $aid, dd2char($m.$d.$aid.$y));
if($filename != ”)
{
$articleRule = dirname($articleRule).’/’.$filename.$GLOBALS[‘cfg_df_ext’];
}
$articleRule = str_replace($arr_rpsource,$arr_rpvalues,$articleRule);
if(ereg(‘\{p’,$articleRule))
{
$articleRule = str_replace(‘{pinyin}’,GetPinyin($title).’_’.$aid,$articleRule);
$articleRule = str_replace(‘{py}’,GetPinyin($title,1).’_’.$aid,$articleRule);
}
$articleUrl = ‘/’.ereg_replace(‘^/’,”,$articleRule);
if(ereg(“index\.html”, $articleUrl) && $cfg_arc_dirname==’Y’)
{
$articleUrl = str_replace(‘index.html’, ”, $articleUrl);
}
return $articleUrl;
}
}

我们看到默认的是$articleRule = str_replace(‘{pinyin}’,GetPinyin

($title).’_’.$aid,$articleRule);

现在只需要<把".’_’.$aid>去掉即可.

最后修改include/inc文件夹下的inc_fun_funAdmin.php文件里的代码.代码如下:

function SpGetPinyin($str,$ishead=0,$isclose=1)
{
global $pinyins;
$restr = ”;
$str = trim($str);
$slen = strlen($str);
if($slen<2)
{
return $str;
}
if(count($pinyins)==0)
{
$fp = fopen(DEDEINC.’/data/pinyin.dat’,’r’);
while(!feof($fp))
{
$line = trim(fgets($fp));
$pinyins[$line[0].$line[1]] = substr($line,3,strlen($line)-3);
}
fclose($fp);
}
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(“[a-z0-9]”,$str[$i]) )
{
$restr .= $str[$i];
}
else
{
$restr .= “_”;
}
}
if($isclose==0)
{
unset($pinyins);
}
return $restr;
}

修改$restr .= “_”;  为$restr .= “-“; 即可.