phpcms v9 调用方法全站点击排行

来源:互联网 发布:牙膏推荐 知乎 编辑:程序博客网 时间:2024/05/21 16:22

/** * 排行榜标签 * @param $data */public function hits($data) {$catid = intval($data['catid']);if($catid != 0){if(!$this->set_modelid($catid)) return false;}$this->hits_db = pc_base::load_model('hits_model');$sql = $desc = $ids = '';$array = $ids_array = array();$order = $data['order'];$hitsid = 'c-'.$this->modelid.'-%';$sql = "hitsid LIKE '$hitsid'";if(isset($data['day'])) {$updatetime = SYS_TIME-intval($data['day'])*86400;$sql .= " AND updatetime>'$updatetime'";}if($catid != 0){if($this->category[$catid]['child']) {$catids_str = $this->category[$catid]['arrchildid'];$pos = strpos($catids_str,',')+1;$catids_str = substr($catids_str, $pos);$sql .= " AND catid IN ($catids_str)";} else {$sql .= " AND catid='$catid'";}}$hits = array();$result = $this->hits_db->select($sql, '*', $data['limit'], $order);foreach ($result as $r) {$pos = strpos($r['hitsid'],'-',2) + 1;$ids_array[] = $id = substr($r['hitsid'],$pos);$hits[$id] = $r;}$ids = implode(',', $ids_array);if($ids) {$sql = "status=99 AND id IN ($ids)";} else {$sql = '';}$this->db->table_name = $this->tablename;$result = $this->db->select($sql, '*', $data['limit'],'','','id');foreach ($ids_array as $id) {if($result[$id]['title']!='') {$array[$id] = $result[$id];$array[$id] = array_merge($array[$id], $hits[$id]);}}return $array;}

       PHPCMS V9 只提供了调用单个频道点击排行的方法,只要对其方法做相应的改变就能做到全站排行。找到phpcms/modules/content/classes/content_tag.class.php,可以修改hits方法。

      在相应位置增加$catid!=0的判断,前台调用:

     {pc:content action="hits" catid="0" num="10" order="views DESC"}