DeDeCms织梦系统栏目列表页和文章内容页如何改成
织梦文章页默认是以数字ID形式的,如果想生成文章内容文字的拼音形式,需要做如下修改:
首先在后台网站栏目管理,高级管理更改一下标签{:{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;
//没指定栏目时用固定规则(专题)1号游戏
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 .= "-"; 即可.
第二种:::
dedecms 生成文章以拼音命名的方法.
使用过织梦的朋友可能会知道,在织梦添加栏目时,会自动生成栏目名称的拼音,可是这样的话,文件路径会很长,看起来不很不方便,也不方便搜索引擎的抓取.
栏目名可以自己随便写,也可以默认拼音,如果默认拼音那生成的是全部汉字的全拼,像“公司简介”,生成后是“gongsijianjie”,如果我们的栏目是5个汉字、6个汉字那生成后的栏目名称其不是很长,那能不能直接生成为"gsjj"呢?答案是可以的。