【phpcms-v9】获取当前栏目下周点击量最高的三篇带缩略图的文章

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>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值