PHPCMS默认仅支持栏目点击排行榜,在V9版本中,也可以通过数据库来调用全站点击排行。

  1. {pc:get sql="SELECT DISTINCT url,title,views FROM v9_news,v9_hits WHERE v9_news.id = substring(v9_hits.hitsid,5) ORDER BY v9_hits.views DESC" num="10" } 
  2. <ul> 
  3. {loop $data $v
  4. <li><a href="{$v['url']}">{$v[title]}</a><span>点击数:{$v[views]}</span></li> 
  5. {/loop} 
  6. </ul> 
  7. {/pc} 
SQL SELECT DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 DISTINCT 用于返回唯一不同的值。

 

语法:SELECT DISTINCT 列名称 FROM 表名称

SQL中SUBSTRING的语法说明
SQL中SUBSTRING用于返回字符、二进制、文本或图像表达式的一部分,下面将为您详细介绍SQL中SUBSTRING的语法说明,供您参考。
功能:返回字符、二进制、文本或图像表达式的一部分
语法:SUBSTRING ( expression, start, length )
SQL中substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样:
参数:
expression 字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。
start 整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置。
length 整数或可以隐式转换为 int 的表达式,指定子字符串的长度。
SQL中SUBSTRING的返回值:
如果 expression 是一种支持的字符数据类型,则返回字符数据。如果 expression 是一种支持的二进制数据类型,则返回二进制数据。如果 start = 1,则子字符串从表达式的第一个字符开始。
以下是PHPCMSV9版本之前的全站点击排行的方法,有兴趣的朋友可以看看。
要修改的代码文件

打开phpcms\modules\content\classes\content_tag.class.php 在里面添加以下代码:
  1. /** 
  2. * sitehits站点点击排行 
  3. * @param $data 
  4. */ 
  5. function sitehits($data){ 
  6. if(emptyempty($data['siteid'])) return false; 
  7. $siteid = intval($data['siteid']); 
  8. $this->hits_db = pc_base::load_model(‘hits_model’); 
  9. $category_content = getcache(‘category_content’,'commons’); 
  10. $catid = ”; 
  11. //获取站点下所有栏目ID 
  12. foreach($category_content as $key=>$val){ 
  13. if($val==$siteid){ 
  14. $catid .= $comma.$key
  15. $comma=','
  16.  
  17. //获取点击排行 
  18. $r = $this->hits_db->select(‘catid in(‘.$catid.’)',’hitsid’,$data['limit'],$data['order']); 
  19. $return = array(); 
  20. $sitemodel_model_db = pc_base::load_model(‘sitemodel_model’); 
  21. $this->db_config = pc_base::load_config(‘database’); 
  22. $tablepre = $this->db_config['default']['tablepre']; 
  23. foreach($r as $key){ 
  24. preg_match_all('/-(\d+)-/',$key['hitsid'],$modelid); 
  25. $id = substr($key['hitsid'],(strpos($key['hitsid'],'-',2)+1)); 
  26. $tablename = $sitemodel_model_db->get_one(array('modelid'=>$modelid[1][0]),'tablename'); 
  27. $this->db->table_name = $tablepre.$tablename['tablename']; 
  28. $return[] = array_merge($return,$this->db->get_one(array(‘id’=>$id))); 
  29. return $return

全站点击排行榜的调用

所有时间点击排行榜:

  1. {pc:content action=”sitehits” siteid=”4″ num=”10″ order=”views DESC” cache=”3600″} 
  2. <ul> 
  3. {loop $data $r
  4. <li><a href="{$r[url]}">{$r[title]}</a></li> 
  5. {/loop} 
  6. </ul> 
  7. {/pc} 

当天点击排行榜

  1. {php $historytime = mktime(0, 0, 0, date('m', TIME), date('d', TIME), date('Y', TIME));} 
  2. {get sql="select p.*,t.* from phpcms_content p,phpcms_content_count t where p.contentid=t.contentid and p.status=99 and p.inputtime>=$historytime order by t.hits desc" rows="10" return="v"
  3. <a herf="{$v[url]}" >{$v[title]}</a>点击数:{$v[hits]} 
  4. {/get} 

本周点击排行榜

  1. <?php $week = gmdate('w', TIME) - 1; 
  2. $week = $week != -1 ? $week : 6; $historytime = mktime(0, 0, 0, date('m', TIME), date('d', TIME) - $weekdate('Y', TIME)); ?> 
  3. {get sql="select p.*,t.* from phpcms_content p,phpcms_content_count t where p.contentid=t.contentid and p.status=99 and p.inputtime>=$historytime order by t.hits desc" rows="10" return="v"
  4. <a herf="{$v[url]}" >{$v[title]}</a>点击数:{$v[hits]} 
  5. {/get} 

本月点击排行榜

  1. {php $historytime = mktime(0, 0, 0, date('m', TIME), 1, date('Y', TIME));} 
  2. {get sql="select p.*,t.* from phpcms_content p,phpcms_content_count t where p.contentid=t.contentid and p.status=99 and p.inputtime>=$historytime order by t.hits desc" rows="10" return="v"
  3. <a herf="{$v[url]}" >{$v[title]}</a>点击数:{$v[hits]} 
  4. {/get} 

以上代码当然可以自定义,48小时点击:dayviews、day=2 本月点击:monthviews、day=48。


返回顶部