📄 正在查看:twcms/block/kp_block_global_search.lib.php
大小:2,110 字节 · 修改:2014-01-23 01:42:52 · 行数:52
1<?php
2defined('KONG_PATH') || exit;
3
4/**
5 * 搜索页模块 (比较占用资源,大站可使用sphinx做搜索引擎)
6 * @param int pagenum 每页显示条数
7 * @param int titlenum 标题长度
8 * @param int intronum 简介长度
9 * @param string dateformat 时间格式
10 * @param int maxcount 允许最大内容数(数据库搜索)
11 * @return array
12 */
13function kp_block_global_search($conf) {
14 global $run, $keyword;
15
16 // hook kp_block_global_search_before.php
17
18 $pagenum = empty($conf['pagenum']) ? 20 : max(1, (int)$conf['pagenum']);
19 $titlenum = isset($conf['titlenum']) ? (int)$conf['titlenum'] : 0;
20 $intronum = isset($conf['intronum']) ? (int)$conf['intronum'] : 0;
21 $dateformat = empty($conf['dateformat']) ? 'Y-m-d H:i:s' : $conf['dateformat'];
22 $maxcount = isset($conf['maxcount']) ? (int)$conf['maxcount'] : 10000;
23
24 $mid = max(2, (int)R('mid'));
25 $table_arr = &$run->_cfg['table_arr'];
26 $table = isset($table_arr[$mid]) ? $table_arr[$mid] : 'article';
27
28 $where = array('title'=>array('LIKE'=>$keyword));
29 $run->cms_content->table = 'cms_'.$table;
30
31 // 不建议内容数大于1W的网站使用数据库搜索
32 if($run->cms_content->count() > $maxcount) return array('total'=> 0, 'pages'=> '', 'list'=> array());
33
34 // 初始分页
35 $total = $run->cms_content->find_count($where);
36 $maxpage = max(1, ceil($total/$pagenum));
37 $page = min($maxpage, max(1, intval(R('page'))));
38 $pages = pages($page, $maxpage, 'index.php?search-index-mid-'.$mid.'-keyword-'.urlencode($keyword).'-page-{page}'.C('url_suffix'));
39
40 // 读取内容列表
41 $list_arr = $run->cms_content->list_arr($where, 'id', -1, ($page-1)*$pagenum, $pagenum, $total);
42 foreach($list_arr as &$v) {
43 $run->cms_content->format($v, $mid, $dateformat, $titlenum, $intronum);
44 $v['subject'] = str_ireplace($keyword, '<font color="red">'.$keyword.'</font>', $v['subject']);
45 $v['intro'] = str_ireplace($keyword, '<font color="red">'.$keyword.'</font>', $v['intro']);
46 }
47
48 // hook kp_block_global_search_after.php
49
50 return array('total'=> $total, 'pages'=> $pages, 'list'=> $list_arr);
51}
52