dede5.7定义文件名“{pinyin} 拼音+文章ID”如何去掉文章ID,只显示拼音?
2014-05-17 14:19
344 查看
首先在后台网站栏目管理,高级管理更改一号游戏{typedir}/{y}/{m}/{aid}.html为{typedir}/{pinyin}.html.
然后修改include文件夹下的/helpers/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"呢?答案是可以的。
现在我教大家怎么修改文件只让它生成汉字的首写字母。
1.找到include/inc/inc_fun_funadmin.php这个文件。
2.找到其中的23行,23行内容为:
$pinyins[$line[0].$line[1]] = substr($line,3,strlen($line)-3);
修改为:
$pinyins[$line[0].$line[1]] = substr($line,3,1);
就OK了。
3.自己测试吧。
dedecms文章内容页面生成拼音url的方法
DEDECMS也支持把文章的URL转化成拼音或者英文
去掉“/拼音_id.html”形式下的ID方法
打开include/channelunit.func.php文件找到如下代码:
$articleRule = str_replace(‘{py}’,GetPinyin($title,1).’_’.$aid,$articleRule);
修改成如下:
$articleRule = str_replace(‘{py}’,GetPinyin($title,1),$articleRule);
再生成看看就能看到效果了
如果是英文字的话生成页面把“_”改成“-”的修改
打开include/inc/inc_fun_funAdmin.php文件,找到如下代码
for($i=0;$i<$slen;$i++)
{
if(ord($str[$i])>0×80)
{
$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 .= “_”;
}
}
修改里面的红色的字体后面的“_”,改成“-”就OK了。
然后修改include文件夹下的/helpers/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"呢?答案是可以的。
现在我教大家怎么修改文件只让它生成汉字的首写字母。
1.找到include/inc/inc_fun_funadmin.php这个文件。
2.找到其中的23行,23行内容为:
$pinyins[$line[0].$line[1]] = substr($line,3,strlen($line)-3);
修改为:
$pinyins[$line[0].$line[1]] = substr($line,3,1);
就OK了。
3.自己测试吧。
dedecms文章内容页面生成拼音url的方法
DEDECMS也支持把文章的URL转化成拼音或者英文
去掉“/拼音_id.html”形式下的ID方法
打开include/channelunit.func.php文件找到如下代码:
$articleRule = str_replace(‘{py}’,GetPinyin($title,1).’_’.$aid,$articleRule);
修改成如下:
$articleRule = str_replace(‘{py}’,GetPinyin($title,1),$articleRule);
再生成看看就能看到效果了
如果是英文字的话生成页面把“_”改成“-”的修改
打开include/inc/inc_fun_funAdmin.php文件,找到如下代码
for($i=0;$i<$slen;$i++)
{
if(ord($str[$i])>0×80)
{
$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 .= “_”;
}
}
修改里面的红色的字体后面的“_”,改成“-”就OK了。
相关文章推荐
- dede实现拼音显示文章标题页文件名
- dede升级到5.7后不显示编辑器|织梦5.7文章编辑器无法调用
- dede文章页面如何显示作者的头像默认只能显示作者用户名
- dede 5.7 联动类型 编辑文章时不显示
- 用dedecms实现拼音显示文章标题页文件名的方法
- 织梦文章url拼音去掉下划线和id
- 织梦DEDECMS文章拼音命名规则时去掉id的方法
- [二次开发]dede文章页面如何显示作者的头像
- dede如何去掉列表页的文章摘要
- dede5.7 GBK 在php5.4环境下 后台编辑器无法显示文章内容
- 如何简单去掉dede后台的验证码 dedecms5.7 验证码怎么去掉
- DedeCMS文章扩展名改成标题拼音并去掉id
- 2. 如何去掉DEDE5.7后台广告
- 如何以仅标题的形式显示blogger所有文章列表
- 如何让Action中的id显示到查询字符串上.
- wince如何去掉APP窗口的动画显示效果
- firefox 火狐如何去掉,恢复工具栏显示
- 如何让WordPress首页不显示指定分类的文章
- DEDE取消发表文章时去掉验证码
- 如何去掉“为了保护您的安全,IE已限制此文件显示可能访问您的计算机的活动内容,单击此处查看选项”