DeDeCms织梦系统栏目列表页和文章内容页如何改成

乐清SEO_开发应用_dedecms_ 乐清SEO2021-01-09 转载自:

织梦文章页默认是以数字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"呢?答案是可以的。