📄 正在查看:twcms/block/kp_block_list_top.lib.php
大小:3,189 字节 · 修改:2014-01-23 01:42:52 · 行数:84
1<?php
2defined('KONG_PATH') || exit;
3
4/**
5 * 内容列表排行模块 (排行功能比较消耗资源,故暂时不增加 一周内、一月内 评论/点击排行功能,有此需求的用户二次开发吧)
6 * @param int cid 分类ID 如果不填,为自动识别;如果cid为0时,为整个模型
7 * @param int mid 模型ID (当cid为0时,设置mid才能生效,否则程序自动识别)
8 * @param string dateformat 时间格式
9 * @param int titlenum 标题长度
10 * @param int intronum 简介长度
11 * @param string orderby 排序方式 最后评论排列[lastdate] 评论数排列[comments] 点击数排列[views]
12 * @param int orderway 降序(-1),升序(1)
13 * @param int start 开始位置
14 * @param int limit 显示几条
15 * @param int life 缓存时间 (开启二级缓存后,点击数排列才会有缓存时间)
16 * @return array
17 */
18function kp_block_list_top($conf) {
19 global $run;
20
21 // hook kp_block_list_top_before.php
22
23 $cid = isset($conf['cid']) ? intval($conf['cid']) : (isset($_GET['cid']) ? intval($_GET['cid']) : 0);
24 $mid = _int($conf, 'mid', 2);
25 $dateformat = empty($conf['dateformat']) ? 'Y-m-d H:i:s' : $conf['dateformat'];
26 $titlenum = _int($conf, 'titlenum');
27 $intronum = _int($conf, 'intronum');
28 $orderby = isset($conf['orderby']) && in_array($conf['orderby'], array('lastdate', 'comments', 'views')) ? $conf['orderby'] : 'lastdate';
29 $orderway = isset($conf['orderway']) && $conf['orderway'] == 1 ? 1 : -1;
30 $start = _int($conf, 'start');
31 $limit = _int($conf, 'limit', 10);
32 $life = _int($conf, 'life', 60);
33
34 if($cid == 0) {
35 // 当cid为0时,根据mid确定table
36 $table_arr = &$run->_cfg['table_arr'];
37 $table = isset($table_arr[$mid]) ? $table_arr[$mid] : 'article';
38 $where = array();
39 }else{
40 $cate_arr = $run->category->get_cache($cid);
41 $table = &$cate_arr['table'];
42 $where = array('cid' => $cid);
43 }
44
45 if($orderby == 'views') {
46 $run->cms_content_views->table = $table_key = 'cms_'.$table.'_views';
47 $key_arr = $run->cms_content_views->find_fetch($where, array($orderby => $orderway), $start, $limit, $life);
48
49 $table_key .= '-id-';
50 $keys = array();
51 foreach($key_arr as $v) {
52 $keys[] = $v['id'];
53 }
54
55 // 读取内容列表
56 $run->cms_content->table = 'cms_'.$table;
57 $list_arr = $run->cms_content->mget($keys);
58 foreach($list_arr as &$v) {
59 $run->cms_content->format($v, $mid, $dateformat, $titlenum, $intronum);
60 isset($v['id']) && $v['views'] = $key_arr[$table_key.$v['id']]['views'];
61 }
62 }else{
63 $run->cms_content_comment_sort->table = $table_key = 'cms_'.$table.'_comment_sort';
64 $key_arr = $run->cms_content_comment_sort->find_fetch_key($where, array($orderby => $orderway), $start, $limit);
65
66 $table_key .= '-id-';
67 $keys = array();
68 foreach($key_arr as $v) {
69 $keys[] = str_replace($table_key, '', $v);
70 }
71
72 // 读取内容列表
73 $run->cms_content->table = 'cms_'.$table;
74 $list_arr = $run->cms_content->mget($keys);
75 foreach($list_arr as &$v) {
76 $run->cms_content->format($v, $mid, $dateformat, $titlenum, $intronum);
77 }
78 }
79
80 // hook kp_block_list_top_after.php
81
82 return array('list'=> $list_arr);
83}
84