实现v9内容页url规则增加汉字拼音功能

发表于2011-03-19 06:31:43来源于PHPCMS官方

次点击[] [] [] [打印] [关闭窗口] [评论]

欢迎大家加入创想工作室QQ群 网络瘫痪上不了网?电脑出故障?找破解软件?加入创想工作室QQ群,向大神求助,一步解决问题!QQ群号码:326338868[点此获取更多QQ群]

效果如下:
当你的标题为 绿色软件 时,链接地址里将带上 lvseruanjian .

实现过程:
修改 modules/content/classes/url.class.php 文件的 public function show()  函数为如下代码:


public function show($id, $page = 0, $catid = 0, $time = 0, $prefix = '',$data = '',$action = 'edit') {
  $page = max($page,1);
  $urls = $catdir = '';
  $category = $this->categorys[$catid];
  $setting = string2array($category['setting']);
  $content_ishtml = $setting['content_ishtml'];
  $show_ruleid = $setting['show_ruleid'];
  $urlrules = $this->urlrules[$show_ruleid];
  if(!$time) $time = SYS_TIME;
  $urlrules_arr = explode('|',$urlrules);
  if($page==1) {
   $urlrule = $urlrules_arr[0];
  } else {
   $urlrule = $urlrules_arr[1];
  }
  if (strpos($category['url'], '://')!==false && strpos($category['url'], '?')===false) {
   if (preg_match('/^((http|https)://)?([^/]+)/i', $category['url'], $matches)) {
    $url = $matches[0].'/';
   }
   $db = pc_base::load_model('category_model');
   $r = $db->get_one(array('url'=>$url), '`catid`');
   $domain_dir = $this->get_categorydir($r['catid']).$this->categorys[$r['catid']]['catdir'].'/';
  }
  $categorydir = $this->get_categorydir($catid);
  $catdir = $category['catdir'];
  $year = date('Y',$time);
  $month = date('m',$time);
  $day = date('d',$time);
//add 2010年10月29日23:49:06 化蝶自在飞 标题转化为拼音 感谢http://www.k686.com站长支持.
      pc_base::load_sys_func('iconv');
$modelid = $category['modelid'];
if(!$modelid) return '';
$db = pc_base::load_model('content_model');
$db->set_model($modelid);
      $r = $db->get_one(array('id'=>$id), '`title`');
      $pinyin = gbk_to_pinyin($r['title']);
      if(is_array($pinyin)) {
      $pinyin = implode('', $pinyin);
      }
//end
  $urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}','{$pinyin}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$page,$pinyin),$urlrule);
  $create_to_html_root = $category['create_to_html_root'];
  if(preg_match("/^(http://)?([^/]+)/i", $category['url'],$_match)) {
   if($category['parentid'] && $_match[0]) {
    foreach ($this->categorys as $_key=>$_value) {
     if($_value['create_to_html_root'] && $_value['url']==$_match[0].'/') $create_to_html_root = 1;
    }
   }
  }
 
  if($create_to_html_root) {
   $html_root = '';
  } else {
   $html_root = $this->html_root;
  }
 
  if($content_ishtml && $url) {
   if (strpos($urls, $domain_dir)!==false) {
    $url_arr[1] = $html_root.'/'.$urls;
    $url_arr[0] = str_replace($domain_dir, $url, $urls);
   } else {
    $url_arr[1] = $html_root.'/'.$domain_dir.$urls;
    $url_arr[0] = WEB_PATH == '/' ? $url.$urls : substr(WEB_PATH,0,-1).$url.$urls;
   }
  } elseif($content_ishtml) {
   $url_arr[0] = WEB_PATH == '/' ? $html_root.'/'.$urls : substr(WEB_PATH,0,-1).$html_root.'/'.$urls;
   $url_arr[1] = $html_root.'/'.$urls;
  } else {
   $url_arr[0] = $url_arr[1] = APP_PATH.$urls;
  }
  //生成静态 ,在添加文章的时候,同时生成静态,不在批量更新URL处调用
  if($content_ishtml && $data) {
   $html = pc_base::load_app_class('html', 'content');
   $data['id'] = $id;
   $html->show($url_arr[1],$data);
   //在添加和修改内容处定义了 INDEX_HTML
   if(defined('INDEX_HTML')) $html->index();
   if(defined('RELATION_HTML')) $html->create_relation_html($catid);
  }
 
  return $url_arr;
}

注意是整个函数替换掉.这个函数是昨天的最新版本.不想替换的可以自己对比和原来函数,只是增加了一段代码.

然后就可以在url规则里使用 {$pinyin} 这个url标志了.注意是内容规则(show),不适用栏目url.

来源:http://bbs.phpcms.cn/viewthread.php?tid=229224&highlight=URL%B9%E6%D4%F2

相关热词搜索:实现内容规则

© copyright 2002-2024, 22BA.COM All Rights Reserved

网站备案号:粤ICP备19114910号

ChuangXiang Design Studio - WebDesign & Internet Marketing

关于我们业务范围联系我们开心一刻网站地图

QQ群一:326338868QQ群二:78712271

QQ群三:193078177

邮箱:news@22ba.com

地址:深圳市福田区金田路现代国际大厦2606