A-A+

PHPCMS全站点击排行榜的调用方法

2014年12月29日 PHP开源系统 评论 9 条 阅读 217 views 次

PHPCMS全站点击排行榜和PHPCMS全站最新文章的调用一样,在PHPCMS V9中都是不支持的,没有相应的content标签,需要使用 get标签将SQL的语句直接调用出来。下面是一段通过执行 SQL 语句来调用全站的点击排行,可以放在首页或指定的位置,代码如下:

{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" }
<ul>
{loop $data $v}
<li><a href="{$v['url']}">{$v[title]}</a><span>点击数:{$v217 views}</span></li>
{/loop}
</ul>
{/pc}

SQL中使用了 SQL SELECT DISTINCT 语句,也可以不加 DISTINCT 语句的,这个语句只是用来返回唯一不同的值,就是去除掉了重复的值,没有太大的作用。

上面的调用方面是比较简单的,只需要把 SQL 的判断排序写好就可以了,还有一种方法就是直接进行二次开发,这种方法适合 V9 及以前的版本,要修改的文件是 phpcms\modules\content\classes\content_tag.class.php,打开这个文件,添加以下的代码:

/**
* sitehits站点点击排行
* @param $data
*/
function sitehits($data){
if(empty($data['siteid'])) return false;
$siteid = intval($data['siteid']);
$this->hits_db = pc_base::load_model(‘hits_model’);
$category_content = getcache(‘category_content’,'commons’);
$catid = ”;
//获取站点下所有栏目ID
foreach($category_content as $key=>$val){
if($val==$siteid){
$catid .= $comma.$key;
$comma=',';
}
}

//获取点击排行
$r = $this->hits_db->select(‘catid in(‘.$catid.’)',’hitsid’,$data['limit'],$data['order']);
$return = array();
$sitemodel_model_db = pc_base::load_model(‘sitemodel_model’);
$this->db_config = pc_base::load_config(‘database’);
$tablepre = $this->db_config['default']['tablepre'];
foreach($r as $key){
preg_match_all('/-(\d+)-/',$key['hitsid'],$modelid);
$id = substr($key['hitsid'],(strpos($key['hitsid'],'-',2)+1));
$tablename = $sitemodel_model_db->get_one(array('modelid'=>$modelid[1][0]),'tablename');
$this->db->table_name = $tablepre.$tablename['tablename'];
$return[] = array_merge($return,$this->db->get_one(array(‘id’=>$id)));
}
return $return;
}

全站点击排行榜的调用

所有时间点击排行榜

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

当天点击排行榜

{php $historytime = mktime(0, 0, 0, date('m', TIME), date('d', TIME), date('Y', TIME));}
{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"}
<a herf="{$v[url]}" >{$v[title]}</a>点击数:{$v[hits]}
{/get}

本周点击排行榜

<?php $week = gmdate('w', TIME) - 1;
$week = $week != -1 ? $week : 6; $historytime = mktime(0, 0, 0, date('m', TIME), date('d', TIME) - $week, date('Y', TIME)); ?>
{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"}
<a herf="{$v[url]}" >{$v[title]}</a>点击数:{$v[hits]}
{/get}

本月点击排行榜

{php $historytime = mktime(0, 0, 0, date('m', TIME), 1, date('Y', TIME));}
{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"}
<a herf="{$v[url]}" >{$v[title]}</a>点击数:{$v[hits]}
{/get}

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

标签:

9 条留言  访客:9 条  博主:0 条

  1. 微信推荐

    来看博主了!

  2. 王语双个人站

    刚上班,过来转转,继续顶贴。

  3. 李阳博客

    过来看看,学习学习。

  4. 张盖盖博客

    感觉博主是全能型人才。

    • smiling

      主要以PHP为主吧。

  5. 赢在大学励志网

    全是英文有点看不懂啊,呵呵

  6. 软件酷(Softku)

    原来是一个技术控
    查找一篇文章进来,以后会常来

    • smiling

      欢迎常来呐。

给我留言