1.content_tag.class.php文件中hits()函数改造为:
/**
* 排行榜标签:len-控制显示条数 thumb-显示带缩略图
* @param $data
*/
public function hits($data) {
$catid = intval($data['catid']); //栏目id,pc标签的catid属性
if(!$this->set_modelid($catid)) return false; //根据栏目id->对应的模型id->模型表,如:news
$data['limit'] = (isset($data['limitt'])&& (!empty($data['limitt'])))?$data['limitt']:"";//weiyanhui添加
$this->hits_db = pc_base::load_model('hits_model'); //hits:点击量表
$sql = $desc = $ids = '';
$array = $ids_array = array();
$order = $data['order']; //pc标签中order属性
$hitsid = 'c-'.$this->modelid.'-%'; //hits点击量表中hitsid字段的组成:c-模型id-文章id
$sql = "hitsid LIKE '$hitsid'"; //拼接sql
if(isset($data['day'])) { //pc标签中day属性:表示调用多少天内的排行
$updatetime = SYS_TIME-intval($data['day'])*86400; //表示调用多少天内的排行
$sql .= " AND updatetime>'$updatetime'"; //拼接sql
}
if($this->category[$catid]['child']) { //当前栏目是否有子栏目
$catids_str = $this->category[$catid]['arrchildid']; //当前栏目下所有子栏目id,包括当前栏目自身的id
$pos = strpos($catids_str,',')+1;
$catids_str = substr($catids_str, $pos); //当前栏目下所有子栏目id,不包括当前栏目自身id
$sql .= " AND catid IN ($catids_str)"; //拼接sql
} else {
$sql .= " AND catid='$catid'"; //如果当前栏目不存在子栏目
}
$hits = array();
$result = $this->hits_db->select($sql, '*', $data['limit'], $order);//查询v9_hits点击量表
foreach ($result as $r) { //$result:v9_hits表中返回的数据
$pos = strpos($r['hitsid'],'-',2) + 1; //格式:c-模型id-文章id,如,c-1-1 ,查找第二个 "-"的位置
$ids_array[] = $id = substr($r['hitsid'],$pos); //文章的id, $ids_array[]:文章id数组
$hits[$id] = $r; //每篇文章的点击量信息 ,格式:$hits[文章id]= 文章点击记录信息
}
$ids = implode(',', $ids_array); //将文章id数组以逗号拼接成一个字符串
if($ids) {
$sql = "status=99 AND id IN ($ids)"; //拼接sql
} else {
$sql = '';
}
$this->db->table_name = $this->tablename; //内容主表:v9_news
$result = $this->db->select($sql, '*', $data['limit'],'','','id'); //查询内容主表:v9_news
foreach ($ids_array as $id) { //$ids_array:hits表中查询出来的文章id数组,id是排好顺序的
if($data['thumb']!=""){ //只查询带缩略图的文章,weiyanhui添加
if($result[$id]['title']!='' && $result[$id]['thumb']!='') {
$array[$id] = $result[$id];
$array[$id] = array_merge($array[$id], $hits[$id]); //将内容主表v9_news中数据与点击量表v9_hits中数据合并,合并桥梁为id
}
}else{ //有缩略图和无缩略图的文章都查询
if($result[$id]['title']!='') {
$array[$id] = $result[$id];
$array[$id] = array_merge($array[$id], $hits[$id]); //将内容主表v9_news中数据与点击量表v9_hits中数据合并,合并桥梁为id
}
}
}
//weiyanhui开始
if(isset($data['len'])){//截取长度
//获取数组中的前len条数据
$array=array_slice($array,0, intval($data['len']));
}
//weiyanhui结束
//echo "<br/>";
//print_r($array);
return $array;
}
2.模板中调用:
<div class="b_bianjituijian_c">
<!-- 当前栏目下周点击率最高的三篇文章 -->
{pc:content action="hits" catid="$catid" thumb="1" len="3" order="weekviews DESC"}
{loop $data $r}
<dl class="b_bianjituijian_cf">
<dt><a href="{$r['url']}"><img src="{$r['thumb']}" width="60" height="60" alt="{$r['title']}"/></a></dt>
<dd>
<h3><a href="{$r['url']}">{str_cut1($r[title],5,'...')}</a></h3>
<p>
{str_cut($r[description],70,'...')}
<a href="{$r['url']}">【详细】</a>
</p>
</dd>
</dl>
<span class="border-bx"></span>
{/loop}
{/pc}
</div>