/** * 根据位置ID获取(专题,推荐) * 如果是广告,则输出广告代码,如果是专题或者推荐信息则输出列表 * * @param $ 参数数组 * @param $area_id 位置ID * @param $pagesize 分页大小 * @param $p 当前分页 * @param $count 是否统计分页 * @param $where 查询条件 * @param $order 专题内文档排序方式,默认为排序升序 */ function get_area($params) { $area_id = isset($params['area_id']) ? $params['area_id'] : 0; $pagesize = isset($params['pagesize']) ? $params['pagesize'] : PAGESIZE_F; $p = isset($params['p']) ? $params['p'] : 1; $count = isset($params['count']) ? $params['count'] : 0; $where = isset($params['where']) ? $params['where'] : ''; $rewrite = isset($params['rewrite']) ? $params['rewrite'] : 2; $order = isset($params['order']) ? $params['order'] : ''; if (!is_numeric($area_id)) { return array(); } if ($area_id == 0) { // 如果位置ID=0,则取列表 $recommend_list = array(); $sql = "select * from " . TB_PREFIX . "recommend_area "; if ($where != '') { $sql .= " where {$where}"; } $suffix = " order by area_order asc,area_id desc"; // 拼接分页数据 $suffix .= " limit " . ($p - 1) * $pagesize . ",{$pagesize}"; $result = $this->dbm->query($sql, $suffix, $count); //print_r($result); //生成surl $count = count($result['list']); for ($i = 0; $i < $count; $i++) { $result['list'][$i]['surl'] = $this->url->encode('special_content', array('host' => SITE_PATH, 'id' => $result['list'][$i]['area_id'])); } $total = $result['total']; // 分页码HTML if ($rewrite == 0 || $rewrite == 1) { // 前台使用动态地址或者伪静态地址 if ($this->url != null) { $result['pagebar'] = helper::pagebar(array('total' => $total, 'pagesize' => $pagesize, 'rewrite' => $rewrite, 'rule' => array('node' => $node, 'obj' => $this->url, 'params' => array('host' => '/', 'cate_id' => $cate_id, 'cname_py' => $this->categories[$cate_id]['cname_py'], 'p' => $p)))); } else { $result['pagebar'] = array('pagecode' => ''); } } else { $result['pagebar'] = helper::pagebar(array('total' => $total, 'pagesize' => $pagesize, 'rewrite' => $rewrite)); } return $result; } else { // 如果位置ID大于0,则取某个位置的数据 $sql = "select * from " . TB_PREFIX . "recommend_area where area_id='{$area_id}' limit 1"; $rs = $this->dbm->query($sql); $recommend = array(); if (count($rs['list']) == 1) { $recommend = $rs['list'][0]; //print_r($recommend); if ($recommend['area_type'] == 0) { // 广告 $tmp_a = unserialize($recommend['area_html']); $order = 1; //print_r($tmp_a); if (is_array($tmp_a['list'])) { foreach ($tmp_a['list'] as $v) { if (!isset($v['order'])) { $order = 0; break; } } if ($order == 1) { $tmp_arr = helper::array_sort($tmp_a['list'], 'order', 'asc'); $tmp = array(); foreach ($tmp_arr as $v) { array_push($tmp, $v); } $tmp_a['list'] = $tmp; } } $recommend = $tmp_a; } else { // 专题,推荐 if ($order == '') { $order = ' order by field(info_id,' . $recommend['id_list'] . ')'; } //$list = $this -> get_list(array('where' => 'info_id in (' . $recommend['id_list'] . ')', 'pagesize' => $pagesize, 'order' => $order,'extern'=>$extern)); //$recommend['list'] = $list['list']; } } return $recommend; } }
/** * 联表查询(2张表) * * @param $params * @param $ -> $table_name 表名 必填 * @param $ -> $fields 字段 field1,field2,... * @param $ -> $where 更新的条件语句 * @param $ -> $suffix order by , limit 语句 * @param $ -> $count 计算总量 0=不计算 1=计算 * @param $ -> $pagesize 分页大小 * 示范 params=array('table1'=>'cate','table2'=>'info','joinon'=>'cate_id#last_cate_id','fields'=>'a.field,b.felde'......) */ public function join_query($params) { // 初始化 $table1 = isset($params['table1']) ? $params['table1'] : ''; $table2 = isset($params['table2']) ? $params['table2'] : ''; // 关联字段 cate_id#last_cate_id 以#分隔 $joinon = isset($params['joinon']) ? $params['joinon'] : ''; $joinon = explode("#", $joinon); $fields = isset($params['fields']) ? $params['fields'] : '*'; $where = isset($params['where']) ? $params['where'] : ''; $suffix = isset($params['suffix']) ? $params['suffix'] : ''; $count = isset($params['count']) ? $params['count'] : 0; $total = isset($params['total']) ? $params['total'] : 0; $left_index = isset($params['left_index']) ? $params['left_index'] : ''; $right_index = isset($params['right_index']) ? $params['right_index'] : ''; $pagesize = isset($params['pagesize']) ? $params['pagesize'] : 10; if (strlen($where) > 0) { $where = "where {$where}"; } $sql = "select {$fields} from {$table1} as a " . $left_index . " left join {$table2} as b " . $right_index . " on a." . $joinon[0] . "=b." . $joinon[1] . " {$where}"; $result = $this->query($sql, $suffix, $count); $result['pagebar'] = helper::pagebar(array('total' => $total > 0 ? $total : $result['total'], 'pagesize' => $pagesize, 'rewrite' => 2)); return $result; }
/** * 取精确标签资讯列表 * * @param $ 为数组格式 * @param $ =>where 更新的条件语句 * @param $ =>order 排序 * @param $ =>pagesize 分页大小 * @param $ =>p 当前页码 * @param $ =>rewrite URL重写方式 0,1,2,默认为2 * @param $ =>count 是否计算总数 0 不计算 1 计算 * @param $ =>resource 是否同时取出资源 0 不取 1 取 * @param $ =>fields 查询的字段 * @param $ =>no_cache 1=强制读取最新数据 * @param $ =>extern 读取扩展表字段0=不读取,1=读取 */ public function get_list_tag($params) { $keyword_id = isset($params['keyword_id']) ? $params['keyword_id'] : ''; $where = isset($params['where']) ? $params['where'] : ''; $pagesize = isset($params['pagesize']) ? $params['pagesize'] : PAGESIZE_F; $p = isset($params['p']) ? $params['p'] : 1; $count = $params['count'] = isset($params['count']) ? $params['count'] : 0; $rewrite = isset($params['rewrite']) ? $params['rewrite'] : 2; $resource = isset($params['resource']) ? $params['resource'] : 0; $fields = isset($params['fields']) ? $params['fields'] : ''; $node = isset($_GET['tpl']) ? $_GET['tpl'] : 'tag'; $no_cache = isset($params['no_cache']) ? $params['no_cache'] : 0; $state = isset($params['state']) ? $params['state'] : 0; $show_extern = isset($params['extern']) ? $params['extern'] : 0; $show_tags = isset($params['show_tags']) ? $params['show_tags'] : 0; $order = 'order by b.info_id desc'; $sql = "select * from " . TB_PREFIX . "keyword where keyword_id='" . $keyword_id . "' limit 1"; $rs = $this->dbm->query($sql); $keyword = ''; if (count($rs['list']) == 1) { $keyword = $rs['list'][0]['keyword']; } if ($fields == '') { $fields = '*'; } else { $fields_arr = explode(',', $fields); $fields = ''; for ($i = 0; $i < count($fields_arr); $i++) { $fields .= ',' . trim($fields_arr[$i]); } $fields = substr($fields, 1); } $total = 0; //总数 // 拼接SQL语句 $sql = "select * from " . TB_PREFIX . "keyword_relation as a left join " . TB_PREFIX . "info_list as b on a.info_id=b.info_id where a.keyword_id='{$keyword_id}' and b.info_state={$state} "; if (strlen($where) > 0) { $sql .= " and {$where} "; } //die($sql); // 拼接排序 $suffix = $order; // 拼接分页数据 $suffix .= " limit " . ($p - 1) * $pagesize . ",{$pagesize}"; // 缓存开启,获取缓存内容 if ($no_cache == 1) { $result = $this->dbm->query($sql, $suffix, $count); } else { if (defined('CACHE_TIME') && CACHE_TIME != '' && CACHE_TIME != 0) { // 缓存文件名 $cache_file = md5($sql . $suffix); $data_path = SITE_PATH . CACHE_NAME . '/list/' . substr($cache_file, 0, 2); // 读取缓存 $result = helper::file_cache($cache_file, '', CACHE_TIME, $data_path); if ($result == 'timeout') { $result = $this->dbm->query($sql, $suffix, $count); for ($i = 0; $i < count($result['list']); $i++) { unset($result['list'][$i]['uid']); unset($result['list'][$i]['uname']); } // 写入缓存 $result = helper::file_cache($cache_file, $result, CACHE_TIME, $data_path); } } else { $result = $this->dbm->query($sql, $suffix, $count); } } if ($count == 1) { $total = $result['total']; } else { $result['total'] = $total; } $result['keyword'] = $keyword; if (defined('INFO_IMG') && file_exists(INFO_IMG)) { $default_img = INFO_IMG; } // 重写返回数组 for ($i = 0; $i < count($result['list']); $i++) { $result['list'][$i]['cate'] = $this->categories[$result['list'][$i]['last_cate_id']]; if ($show_extern == '1') { // 取扩展表 $extern = $this->get_extern_by_cate_id($result['list'][$i]['cate']['cate_id']); if ($extern['extern_name'] != '') { $result['list'][$i]['extern'] = $this->get_extern($extern['extern_name'], $result['list'][$i]['info_id']); } // 取扩展字段结束 } // 取资源列表 if ($resource == 1) { $result['list'][$i]['resource'] = $this->get_resource($result['list'][$i]['info_id']); $result['list'][$i]['resource_total'] = count($result['list'][$i]['resource']); } // 缩略图 if (isset($result['list'][$i]['info_img'])) { if ($result['list'][$i]['info_img'] == '') { $result['list'][$i]['info_img'] = $default_img; } $result['list'][$i]['thumb'] = $this->thumb_url($result['list'][$i]['info_img']); } // URL $surl_domain = $this->bind_domain($result['list'][$i]['last_cate_id']); $result['list'][$i]['surl'] = ($surl_domain == '' ? $this->url_recheck() : $surl_domain) . $this->url->encode('content_info', array('host' => SITE_PATH, 'id' => $result['list'][$i]['info_id'])); if ($result['list'][$i]['info_url'] != '') { $result['list'][$i]['surl'] = $result['list'][$i]['info_url']; } // 资讯标题 // 标题加粗 $result['list'][$i]['info_style_title'] = $result['list'][$i]['info_title']; if ($result['list'][$i]['fbold'] == 1) { $result['list'][$i]['info_style_title'] = "<b>" . $result['list'][$i]['info_title'] . "</b>"; } // 标题加亮 if (!empty($result['list'][$i]['fcolor'])) { $result['list'][$i]['info_style_title'] = "<font color='" . $result['list'][$i]['fcolor'] . "'>" . $result['list'][$i]['info_style_title'] . "</font>"; } // 资讯简介 if ($result['list'][$i]['info_desc'] == '') { $result['list'][$i]['info_desc'] = helper::utf8_substr(preg_replace('~(<style[^>]*>[\\w\\W]*?</style>)|(<[^>]*>)|(\\r)|(\\n)|(\\t)~', '', $result['list'][$i]['info_body']), 0, 220); } //精确标签输出 //查询关系表中的关键字ID if ($show_tags == 1) { $sql = "select keyword_id from " . TB_PREFIX . "keyword_relation where info_id= '{$result['list'][$i]['info_id']}'"; $r = $this->dbm->query($sql); $ids = array(); foreach ($r['list'] as $k => $v) { array_push($ids, $v['keyword_id']); } $sql = "select * from " . TB_PREFIX . "keyword where keyword_id in (" . implode(',', $ids) . ")"; $ret = $this->dbm->query($sql); $result['tags_html'] = ''; if (count($ret['list']) > 0) { $result['list'][$i]['tags'] = array(); $result['list'][$i]['tags_html'] = ''; foreach ($ret['list'] as $k => $v) { $result['list'][$i]['tags'][] = $v['keyword']; $result['list'][$i]['tags_html'] .= '<a href="' . $this->url->encode('tag_index', array('host' => SITE_PATH, 'extid' => $this->categories[$result['list'][$i]['last_cate_id']]['extern_id'], 'id' => $v['keyword_id'])) . '" target="_blank">' . $v['keyword'] . '</a> '; } } } } // 分页码HTML if ($rewrite == 0 || $rewrite == 1) { // 前台使用动态地址或者伪静态地址 if ($this->url != null && $params['count'] == 1) { $cpy = ''; $result['pagebar'] = helper::pagebar(array('total' => $total, 'pagesize' => $pagesize, 'rewrite' => $rewrite, 'rule' => array('node' => $node, 'obj' => $this->url, 'params' => array('host' => SITE_PATH, 'id' => $keyword_id, 'p' => $p)))); } else { $result['pagebar'] = array('pagecode' => ''); } } else { $result['pagebar'] = helper::pagebar(array('total' => $total, 'pagesize' => $pagesize, 'rewrite' => $rewrite)); } return $result; }