|
在/source/module/forum/forum_viewthread.php 可以看到$post['relateitem']被定义
- if($post['first']) {
- if($ordertype == 1 && $page != 1) {
- continue;
- }
- $_G['forum_firstpid'] = $post['pid'];
- if($_G['forum_thread']['price']) {
- $summary = str_replace(array("\r", "\n"), '', messagecutstr(strip_tags($thread['freemessage']), 160));
- } else {
- $summary = str_replace(array("\r", "\n"), '', messagecutstr(strip_tags($post['message']), 160));
- }
- $tagarray_all = $posttag_array = array();
- $tagarray_all = explode("\t", $post['tags']);
- if($tagarray_all) {
- foreach($tagarray_all as $var) {
- if($var) {
- $tag = explode(',', $var);
- $posttag_array[] = $tag;
- $tagnames[] = $tag[1];
- }
- }
- }
- $post['tags'] = $posttag_array;
- if($post['tags']) {
- $post['relateitem'] = getrelateitem($post['tags'], $post['tid'], $_G['setting']['relatenum'], $_G['setting']['relatetime']);
- }
复制代码 其中使用函数 getrelateitem,该函数定义在同一文件中
- function getrelateitem($tagarray, $tid, $relatenum, $relatetime, $relatecache = '', $type = 'tid') {
- $tagidarray = $relatearray = $relateitem = array();
- $updatecache = 0;
- $limit = $relatenum;
- if(!$limit) {
- return '';
- }
- foreach($tagarray as $var) {
- $tagidarray[] = $var['0'];
- }
- if(!$tagidarray) {
- return '';
- }
- if(empty($relatecache)) {
- $thread = C::t('forum_thread')->fetch_thread($tid);
- $relatecache = $thread['relatebytag'];
- }
- if($relatecache) {
- $relatecache = explode("\t", $relatecache);
- if(TIMESTAMP > $relatecache[0] + $relatetime * 60) {
- $updatecache = 1;
- } else {
- if(!empty($relatecache[1])) {
- $relatearray = explode(',', $relatecache[1]);
- }
- }
- } else {
- $updatecache = 1;
- }
- if($updatecache) {
- $query = C::t('common_tagitem')->select($tagidarray, $tid, $type, 'itemid', 'DESC', $limit, 0, '<>');
- foreach($query as $result) {
- if($result['itemid']) {
- $relatearray[] = $result['itemid'];
- }
- }
- if($relatearray) {
- $relatebytag = implode(',', $relatearray);
- }
- C::t('forum_thread')->update($tid, array('relatebytag'=>TIMESTAMP."\t".$relatebytag));
- }
- if(!empty($relatearray)) {
- rsort($relatearray);
- foreach(C::t('forum_thread')->fetch_all_by_tid($relatearray) as $result) {
- if($result['displayorder'] >= 0) {
- $relateitem[] = $result;
- }
- }
- }
- return $relateitem;
- }
复制代码 可以看到它被缓存在 $relatecache 变量中。 |
|