首页
站长论坛BBS
救助
投稿
discuz视频教程
discuz技术支持
版块
登录
快速注册

Discuz的forum_index.php文件的分析

ARCHY 2015-6-13 [Discuz开发] 来自PC 复制链接
217501
discuz使用视频教程
31idc

马上注册,一起探讨正确快速的建站方法

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
discuz的forum_index.php文件的分析注释,推荐查看:discuz核心类库class_core的函数注释

  1. <?php

  2. /**
  3. *      [Discuz!] (C)2001-2099 Comsenz Inc.
  4. *      This is NOT a freeware, use is subject to license terms
  5. *
  6. *      $Id: forum_index.php 29580 2012-04-20 02:53:59Z svn_project_zhangjie $
  7. */

  8. //mod文件只能被入口文件引用,不能直接访问
  9. if(!defined('IN_DISCUZ')) {
  10.         exit('Access Denied');
  11. }

  12. /**
  13. * 返回库文件的全路径
  14. *
  15. * @param string $libname 库文件分类及名称
  16. * @param string $folder 模块目录'module','include','class'
  17. * @return string
  18. *
  19. * @example require DISCUZ_ROOT.'./source/function/function_cache.php'
  20. * @example 我们可以利用此函数简写为:require libfile('function/cache');
  21. * 再如:require_once libfile('space/'.$do, 'include');//包含 "/source/include/space/space_profile.php" 文件
  22. * 1、libfile函数返回库文件的全路径
  23. * 2、包含文件路径格式:"/source/include/space/space_$do.php"
  24. * 3、require_once "返回的库文件的全路径",这样就可以将库文件包含进来
  25. */
  26. require_once libfile('function/forumlist');//引入"/source/function/function_forumlist.php"函数库文件

  27. $gid = intval(getgpc('gid'));//默认值为0:分区id;何为分区?简单说,就是凌驾与版块之上的一个分类
  28. $showoldetails = get_index_online_details();//默认情况下为空值,不知道怎么回事

  29. //论坛首页缓存更细时间,0-不开启
  30. //uid-管理员id   gid-分区id   cacheindexlife-首页缓存时间
  31. //gid为空的情况
  32. if(!$_G['uid'] && !$gid && $_G['setting']['cacheindexlife'] && !defined('IN_ARCHIVER') && !defined('IN_MOBILE')) {
  33.         get_index_page_guest_cache();//此代码只针对游客
  34. }

  35. $newthreads = round((TIMESTAMP - $_G['member']['lastvisit'] + 600) / 1000) * 1000;
  36. //初始化数组变量
  37. $catlist = $forumlist = $sublist = $forumname = $collapse = $favforumlist = array();
  38. //初始化普通变量:主题、帖子、今日帖子、短消息
  39. $threads = $posts = $todayposts = $announcepm = 0;
  40. //定义发帖数量
  41. $postdata = $_G['cache']['historyposts'] ? explode("\t", $_G['cache']['historyposts']) : array(0,0);
  42. $postdata[0] = intval($postdata[0]);//昨日发帖
  43. $postdata[1] = intval($postdata[1]);//历史最高发帖

  44. //创建站点栏目名称、描述、关键字
  45. list($navtitle, $metadescription, $metakeywords) = get_seosetting('forum');
  46. if(!$navtitle) {//$navtitle-默认值为“论坛”
  47.         $navtitle = $_G['setting']['navs'][2]['navname'];
  48.         $nobbname = false;
  49. } else {
  50.         //默认执行
  51.         $nobbname = true;
  52. }
  53. //描述
  54. if(!$metadescription) {
  55.         $metadescription = $navtitle;
  56. }
  57. //关键字
  58. if(!$metakeywords) {
  59.         $metakeywords = $navtitle;
  60. }

  61. //heatthread:热帖
  62. if($_G['setting']['indexhot']['status'] && $_G['cache']['heats']['expiration'] < TIMESTAMP) {
  63.         require_once libfile('function/cache');//引入"/source/function/function_cache.php"函数库文件
  64.         updatecache('heats');
  65. }

  66. if($_G['uid'] && empty($_G['cookie']['nofavfid'])) {
  67.         $favfids = array();
  68.         $forum_favlist = C::t('home_favorite')->fetch_all_by_uid_idtype($_G['uid'], 'fid');
  69.         if(!$forum_favlist) {
  70.                 dsetcookie('nofavfid', 1, 31536000);
  71.         }
  72.         foreach($forum_favlist as $key => $favorite) {
  73.                 if(defined('IN_MOBILE')) {
  74.                         $forum_favlist[$key]['title'] = strip_tags($favorite['title']);
  75.                 }
  76.                 $favfids[] = $favorite['id'];
  77.         }
  78.         if($favfids) {
  79.                 $favforumlist = C::t('forum_forum')->fetch_all($favfids);
  80.                 foreach($favforumlist as $id => $forum) {
  81.                         forum($favforumlist[$id]);
  82.                 }
  83.         }
  84. }


  85. //默认情况下不执行,即:直接跳过这段if代码段
  86. if(empty($gid) && empty($_G['member']['accessmasks']) && empty($showoldetails)) {
  87.         extract(get_index_memory_by_groupid($_G['member']['groupid']));
  88.         if(defined('FORUM_INDEX_PAGE_MEMORY') && FORUM_INDEX_PAGE_MEMORY) {
  89.                 categorycollapse();
  90.                 if(!defined('IN_ARCHIVER')) {
  91.                         include template('diy:forum/discuz');//引入模板文件的方式
  92.                 } else {
  93.                         include loadarchiver('forum/discuz');
  94.                 }
  95.                 dexit();
  96.         }
  97. }

  98. //默认情况下执行此if代码段;FORUM_INDEX_PAGE_MEMORY是首页所有缓存数据的一个常量
  99. //gid为空的情况             FORUM_INDEX_PAGE_MEMORY常量
  100. if(!$gid && (!defined('FORUM_INDEX_PAGE_MEMORY') || !FORUM_INDEX_PAGE_MEMORY)) {
  101.         /*格式:
  102.          * <li><span><a href="">公告1</a></span></li>
  103.          * <li><span><a href="">公告2</a></span></li>
  104.          */
  105.         $announcements = get_index_announcements();//首页公告,此函数的定义在当前文件底部

  106.         //通过状态值查询所有开启的版块或分区相关信息,可查看桌面$forums = Ct('forum_forum')-fetch_all_by_status(1).txt文件
  107.         //对应pre_forum_forum数据表中的记录
  108.         $forums = C::t('forum_forum')->fetch_all_by_status(1);
  109.         //初始化一个数组变量
  110.         $fids = array();
  111.         foreach($forums as $forum) {//$forum-代表每一个开启的分区或版块相关的信息数组,一般为一维数组
  112.             //分区或版块id数组,格式:$fid[分区或版块id]=分区或版块id;$fids[1]=1
  113.             $fids[$forum['fid']] = $forum['fid'];//启用的分区id或版块id
  114.         }

  115.         //初始化一个版块访问权限数组变量
  116.         $forum_access = array();
  117.         if(!empty($_G['member']['accessmasks'])) {//用户访问权限标志,默认值为1
  118.                 $forum_access = C::t('forum_access')->fetch_all_by_fid_uid($fids, $_G['uid']);
  119.         }
  120.         //获取版块扩展字段信息,对应数据表:pre_forum_forumfield,查看桌面 $forum_fields.txt文件
  121.         $forum_fields = C::t('forum_forumfield')->fetch_all($fids);
  122.         foreach($forums as $forum) {
  123.                 if($forum_fields[$forum['fid']]['fid']) {//分区或版块id
  124.                         //将分区或版块的通用信息字段或扩展字段信息合并在一起
  125.                         //即将pre_forum_forum表的字段与pre_forum_fields表的字段合并在一起
  126.                         $forum = array_merge($forum, $forum_fields[$forum['fid']]);//一维数组
  127.                 }
  128.                 if($forum_access['fid']) {
  129.                         $forum = array_merge($forum, $forum_access[$forum['fid']]);
  130.                 }
  131.                 //版块或分区的名称
  132.                 $forumname[$forum['fid']] = strip_tags($forum['name']);
  133.                 //反序列化的pre_forum_forumfields表中extra字段的值
  134.                 $forum['extra'] = empty($forum['extra']) ? array() : dunserialize($forum['extra']);
  135.                 if(!is_array($forum['extra'])) {
  136.                         $forum['extra'] = array();//数组
  137.                 }
  138.                
  139.                 //版块的情况,不包括分区的情况
  140.                 if($forum['type'] != 'group') {//版块数组信息的情况   group-分区  forum-版块
  141.                     
  142.                         $threads += $forum['threads'];//主题数量
  143.                         $posts += $forum['posts'];//帖子数量
  144.                         $todayposts += $forum['todayposts'];//今日发帖数量

  145.                         //版块的情况
  146.                         if($forum['type'] == 'forum' && isset($catlist[$forum['fup']])) {//版块存在上级分区的情况
  147.                                 //forum函数的定义位置:"/source/function/function_forumlist.php"函数库文件
  148.                                 if(forum($forum)) {
  149.                                         $catlist[$forum['fup']]['forums'][] = $forum['fid'];//分区下的所有的版块id
  150.                                         /*如下形式:
  151.                                          * [forums] => Array         //当前分区下版块id数组,即是fid数组
  152.                                             (
  153.                                                 [0] => 2         //娱乐
  154.                                                 [1] => 36        //文化
  155.                                                 [2] => 37        //体育
  156.                                                 [3] => 38        //艺术
  157.                                                 [4] => 39        //商界
  158.                                             )
  159.                                          */
  160.                                         //排序id
  161.                                         $forum['orderid'] = $catlist[$forum['fup']]['forumscount']++;
  162.                                         //子版块
  163.                                         $forum['subforums'] = '';
  164.                                         $forumlist[$forum['fid']] = $forum;//仅版块数组 $forumlist,可查看桌面$forumlist.txt文件
  165.                                 }

  166.                         } elseif(isset($forumlist[$forum['fup']])) {//$forum['fup']=64 的情况,即:女装版块
  167.                                 //女装版块下的子版块数组信息
  168.                                 $forumlist[$forum['fup']]['threads'] += $forum['threads'];//主题数量
  169.                                 $forumlist[$forum['fup']]['posts'] += $forum['posts'];//帖子数量
  170.                                 $forumlist[$forum['fup']]['todayposts'] += $forum['todayposts'];//今日发帖数
  171.                                 if($_G['setting']['subforumsindex'] && $forumlist[$forum['fup']]['permission'] == 2 && !($forumlist[$forum['fup']]['simple'] & 16) || ($forumlist[$forum['fup']]['simple'] & 8)) {
  172.                                         //绑定的域名
  173.                                         $forumurl = !empty($forum['domain']) && !empty($_G['setting']['domain']['root']['forum']) ? 'http://'.$forum['domain'].'.'.$_G['setting']['domain']['root']['forum'] : 'forum.php?mod=forumdisplay&fid='.$forum['fid'];
  174.                                         $forumlist[$forum['fup']]['subforums'] .= (empty($forumlist[$forum['fup']]['subforums']) ? '' : ', ').'<a href="'.$forumurl.'" '.(!empty($forum['extra']['namecolor']) ? ' style="color: ' . $forum['extra']['namecolor'].';"' : '') . '>'.$forum['name'].'</a>';
  175.                                 }
  176.                         }

  177.                 } else {//分区的情况,不包含版块的情况

  178.                         if($forum['moderators']) {//版主
  179.                                  $forum['moderators'] = moddisplay($forum['moderators'], 'flat');
  180.                         }
  181.                         $forum['forumscount']         = 0;
  182.                         $catlist[$forum['fid']] = $forum;//分区数组信息

  183.                 }
  184.         }
  185.         //销毁不用的数组变量
  186.         unset($forum_access, $forum_fields);

  187.         //循环分区二维数组信息   分区id  一维数组分区信息
  188.         foreach($catlist as $catid => $category) {
  189.                 $catlist[$catid]['collapseimg'] = 'collapsed_no.gif';//伸张或收缩图片
  190.                 if($catlist[$catid]['forumscount'] && $category['forumcolumns']) {
  191.                         $catlist[$catid]['forumcolwidth'] = (floor(100 / $category['forumcolumns']) - 0.1).'%';
  192.                         $catlist[$catid]['endrows'] = '';
  193.                         if($colspan = $category['forumscount'] % $category['forumcolumns']) {
  194.                                 while(($category['forumcolumns'] - $colspan) > 0) {
  195.                                         $catlist[$catid]['endrows'] .= '<td width="'.$catlist[$catid]['forumcolwidth'].'">&nbsp;</td>';
  196.                                         $colspan ++;
  197.                                 }
  198.                                 $catlist[$catid]['endrows'] .= '</tr>';
  199.                         }
  200.                 } elseif(empty($category['forumscount'])) {
  201.                         unset($catlist[$catid]);
  202.                 }
  203.         }
  204.         unset($catid, $category);

  205.         if(isset($catlist[0]) && $catlist[0]['forumscount']) {
  206.                 $catlist[0]['fid'] = 0;
  207.                 $catlist[0]['type'] = 'group';
  208.                 $catlist[0]['name'] = $_G['setting']['bbname'];
  209.                 $catlist[0]['collapseimg'] = 'collapsed_no.gif';
  210.         } else {
  211.                 unset($catlist[0]);
  212.         }

  213.         if(!IS_ROBOT && ($_G['setting']['whosonlinestatus'] == 1 || $_G['setting']['whosonlinestatus'] == 3)) {
  214.                 $_G['setting']['whosonlinestatus'] = 1;

  215.                 $onlineinfo = explode("\t", $_G['cache']['onlinerecord']);//在线访问记录.Array ( [0] => 2 [1] => 1378968576 )
  216.             
  217.                 if(empty($_G['cookie']['onlineusernum'])) {//在线用户数
  218.                         $onlinenum = C::app()->session->count();
  219.                         if($onlinenum > $onlineinfo[0]) {
  220.                                 $onlinerecord = "$onlinenum\t".TIMESTAMP;
  221.                                 C::t('common_setting')->update('onlinerecord', $onlinerecord);
  222.                                 savecache('onlinerecord', $onlinerecord);
  223.                                 $onlineinfo = array($onlinenum, TIMESTAMP);
  224.                         }
  225.                         dsetcookie('onlineusernum', intval($onlinenum), 300);
  226.                 } else {
  227.                         $onlinenum = intval($_G['cookie']['onlineusernum']);
  228.                 }
  229.                 $onlineinfo[1] = dgmdate($onlineinfo[1], 'd');

  230.                 $detailstatus = $showoldetails == 'yes' || (((!isset($_G['cookie']['onlineindex']) && !$_G['setting']['whosonline_contract']) || $_G['cookie']['onlineindex']) && $onlinenum < 500 && !$showoldetails);

  231.                 $guestcount = $membercount = 0;
  232.                 if(!empty($_G['setting']['sessionclose'])) {
  233.                         $detailstatus = false;
  234.                         $membercount = C::app()->session->count(1);
  235.                         $guestcount = $onlinenum - $membercount;
  236.                 }

  237.                 if($detailstatus) {
  238.                         $actioncode = lang('action');

  239.                         $_G['uid'] && updatesession();
  240.                         $whosonline = array();

  241.                         $_G['setting']['maxonlinelist'] = $_G['setting']['maxonlinelist'] ? $_G['setting']['maxonlinelist'] : 500;
  242.                         foreach(C::app()->session->fetch_member(1, 0, $_G['setting']['maxonlinelist']) as $online){
  243.                                 $membercount ++;
  244.                                 if($online['invisible']) {
  245.                                         $invisiblecount++;
  246.                                         continue;
  247.                                 } else {
  248.                                         $online['icon'] = !empty($_G['cache']['onlinelist'][$online['groupid']]) ? $_G['cache']['onlinelist'][$online['groupid']] : $_G['cache']['onlinelist'][0];
  249.                                 }
  250.                                 $online['lastactivity'] = dgmdate($online['lastactivity'], 't');
  251.                                 $whosonline[] = $online;
  252.                         }
  253.                         if(isset($_G['cache']['onlinelist'][7]) && $_G['setting']['maxonlinelist'] > $membercount) {
  254.                                 foreach(C::app()->session->fetch_member(2, 0, $_G['setting']['maxonlinelist'] - $membercount) as $online){
  255.                                         $online['icon'] = $_G['cache']['onlinelist'][7];
  256.                                         $online['username'] = $_G['cache']['onlinelist']['guest'];
  257.                                         $online['lastactivity'] = dgmdate($online['lastactivity'], 't');
  258.                                         $whosonline[] = $online;
  259.                                 }
  260.                         }
  261.                         unset($actioncode, $online);

  262.                         if($onlinenum > $_G['setting']['maxonlinelist']) {
  263.                                 $membercount = C::app()->session->count(1);
  264.                                 $invisiblecount = C::app()->session->count_invisible();
  265.                         }

  266.                         if($onlinenum < $membercount) {
  267.                                 $onlinenum = C::app()->session->count();
  268.                                 dsetcookie('onlineusernum', intval($onlinenum), 300);
  269.                         }

  270.                         $invisiblecount = intval($invisiblecount);
  271.                         $guestcount = $onlinenum - $membercount;

  272.                         unset($online);
  273.                 }

  274.         } else {
  275.                 $_G['setting']['whosonlinestatus'] = 0;
  276.         }

  277.         if(defined('FORUM_INDEX_PAGE_MEMORY') && !FORUM_INDEX_PAGE_MEMORY) {
  278.                 $key = !IS_ROBOT ? $_G['member']['groupid'] : 'for_robot';
  279.                 memory('set', 'forum_index_page_'.$key, array(
  280.                         'catlist' => $catlist,//分区数组列表,不包含版块,此数组对应版块扩展表及版块表-pre_forum_forumfield、pre_forum_forum的字段
  281.                         'forumlist' => $forumlist,//无下级版块的版块信息数组
  282.                         'sublist' => $sublist,//子版块列表
  283.                         'whosonline' => $whosonline,//谁在线
  284.                         'onlinenum' => $onlinenum,//在线人数
  285.                         'membercount' => $membercount,//会员数
  286.                         'guestcount' => $guestcount,//游客数
  287.                         'announcements' => $announcements,//公告
  288.                         'threads' => $threads,//主题数
  289.                         'posts' => $posts,//帖子数
  290.                         'todayposts' => $todayposts,//今天发表帖子数
  291.                         'onlineinfo' => $onlineinfo,//在线信息
  292.                         'announcepm' => $announcepm), getglobal('setting/memory/forumindex'));
  293.         }

  294. } else {
  295.         require_once DISCUZ_ROOT.'./source/include/misc/misc_category.php';
  296. }


  297. if(defined('IN_ARCHIVER')) {
  298.         include loadarchiver('forum/discuz');
  299.         exit();
  300. }

  301. //版块伸张或收缩
  302. categorycollapse();

  303. /*
  304. * 1、gid-分区id不为空的情况,如果gid为空时,不会执行下面if...else...中的代码段
  305. * 2、$catlist:查看桌面
  306.         echo "<pre>";
  307.         print_r($catlist);
  308.         exit;
  309. * 3、$_G['category']全局变量的生成
  310. * 4、$_G['fid']全局变量的生成
  311. */
  312. //gid不为空的情况
  313. if($gid && !empty($catlist)) {//当前分区版块
  314.         $_G['category'] = $catlist[$gid];//gid-分区id        当前分区数组数据,包括所有的子版块fid
  315.         $forumseoset = array(//当前分区的SEO设置
  316.                 'seotitle' => $catlist[$gid]['seotitle'],//分区SEO标题
  317.                 'seokeywords' => $catlist[$gid]['keywords'],//分区SEO关键字
  318.                 'seodescription' => $catlist[$gid]['seodescription']//分区SEO描述
  319.         );
  320.         $seodata = array('fgroup' => $catlist[$gid]['name']);//当前分区名称
  321.         //生成当前分区的SEO信息
  322.         list($navtitle, $metadescription, $metakeywords) = get_seosetting('threadlist', $seodata, $forumseoset);
  323.         if(empty($navtitle)) {
  324.                 $navtitle = $navtitle_g;
  325.                 $nobbname = false;
  326.         } else {//默认执行
  327.                 $nobbname = true;
  328.         }
  329.         $_G['fid'] = $gid;//当前分区id
  330. }

  331. /*
  332. * 1、对应模板文件:/data/diy/forum/discuz.htm  或者 /template/default/forum/discuz.htm,两者选其一
  333. * 2、使用template()函数显示已经存在的模板
  334. * 3、格式 include template("模板文件夹/模板名称无后缀");的方式进行解析
  335. * 4、在 source/function/function_core.php文件中定义
  336. * 5、如:include template('forum/mytest'); //使用自定义模板套系中的forum目录的mytest.htm
  337. */
  338. include template('diy:forum/discuz:'.$gid);//结果:template("diy:forum/discuz:0")

  339. /*
  340. * 1、获取首页公告
  341. */
  342. function get_index_announcements() {
  343.         global $_G;//超级全局变量
  344.         $announcements = '';//公告变量
  345.         if($_G['cache']['announcements']) {//公告数组
  346.                 $readapmids = !empty($_G['cookie']['readapmid']) ? explode('D', $_G['cookie']['readapmid']) : array();
  347.                 foreach($_G['cache']['announcements'] as $announcement) {
  348.                         //公告结束时间不为空,公告结束时间大于当前时间
  349.                         if(!$announcement['endtime'] || $announcement['endtime'] > TIMESTAMP && (empty($announcement['groups']) || in_array($_G['member']['groupid'], $announcement['groups']))) {
  350.                                 if(empty($announcement['type'])) {//公告类型为空的情况
  351.                                         $announcements .= '<li><span><a href="forum.php?mod=announcement&id='.$announcement['id'].'" target="_blank" class="xi2">'.$announcement['subject'].
  352.                                                 '</a></span><em>('.dgmdate($announcement['starttime'], 'd').')</em></li>';
  353.                                 } elseif($announcement['type'] == 1) {//公告类型为1的情况
  354.                                         $announcements .= '<li><span><a href="'.$announcement['message'].'" target="_blank" class="xi2">'.$announcement['subject'].
  355.                                                 '</a></span><em>('.dgmdate($announcement['starttime'], 'd').')</em></li>';
  356.                                 }
  357.                         }
  358.                 }
  359.         }
  360.         return $announcements;
  361. }

  362. /*
  363. * 1、获取游客数据缓存
  364. */
  365. function get_index_page_guest_cache() {
  366.         global $_G;
  367.         $indexcache = getcacheinfo(0);
  368.         if(TIMESTAMP - $indexcache['filemtime'] > $_G['setting']['cacheindexlife']) {
  369.                 @unlink($indexcache['filename']);
  370.                 define('CACHE_FILE', $indexcache['filename']);
  371.         } elseif($indexcache['filename']) {
  372.                 @readfile($indexcache['filename']);
  373.                 $updatetime = dgmdate($indexcache['filemtime'], 'H:i:s');
  374.                 $gzip = $_G['gzipcompress'] ? ', Gzip enabled' : '';
  375.                 echo "<script type=\"text/javascript\">
  376.                         if($('debuginfo')) {
  377.                                 $('debuginfo').innerHTML = '. This page is cached  at $updatetime $gzip .';
  378.                         }
  379.                         </script>";
  380.                 exit();
  381.         }
  382. }

  383. /*
  384. * 1、获取论坛首页缓存
  385. */
  386. function get_index_memory_by_groupid($key) {
  387.         $enable = getglobal('setting/memory/forumindex');
  388.         if($enable !== null && memory('check')) {
  389.                 if(IS_ROBOT) {
  390.                         $key = 'for_robot';
  391.                 }
  392.                 $ret = memory('get', 'forum_index_page_'.$key);
  393.                 define('FORUM_INDEX_PAGE_MEMORY', $ret ? 1 : 0);
  394.                 if($ret) {
  395.                         return $ret;
  396.                 }
  397.         }
  398.         return array('none' => null);
  399. }

  400. /*
  401. * 1、获取首页在线信息详情
  402. */
  403. function get_index_online_details() {
  404.         $showoldetails = getgpc('showoldetails');
  405.         switch($showoldetails) {
  406.                 case 'no': dsetcookie('onlineindex', ''); break;
  407.                 case 'yes': dsetcookie('onlineindex', 1, 86400 * 365); break;
  408.         }
  409.         return $showoldetails;
  410. }

  411. /*
  412. * 1、版块绑定的域名
  413. */
  414. function do_forum_bind_domains() {
  415.         global $_G;
  416.         if($_G['setting']['binddomains'] && $_G['setting']['forumdomains']) {
  417.                 $loadforum = isset($_G['setting']['binddomains'][$_SERVER['HTTP_HOST']]) ? max(0, intval($_G['setting']['binddomains'][$_SERVER['HTTP_HOST']])) : 0;
  418.                 if($loadforum) {
  419.                         dheader('Location: '.$_G['setting']['siteurl'].'/forum.php?mod=forumdisplay&fid='.$loadforum);
  420.                 }
  421.         }
  422. }

  423. //版块伸张或收缩功能函数
  424. function categorycollapse() {
  425.         global $_G, $collapse, $catlist;
  426.         if(!$_G['uid']) {
  427.                 return;
  428.         }
  429.         //此时 fid-分区id   forum-可以查看桌面
  430.         //如果是首页,那么就会有多个分区
  431.         foreach($catlist as $fid => $forum) {
  432.                 if(!isset($_G['cookie']['collapse']) || strpos($_G['cookie']['collapse'], '_category_'.$fid.'_') === FALSE) {
  433.                         $catlist[$fid]['collapseimg'] = 'collapsed_no.gif';
  434.                         $collapse['category_'.$fid] = '';
  435.                 } else {
  436.                         $catlist[$fid]['collapseimg'] = 'collapsed_yes.gif';//伸展或收缩图片
  437.                         $collapse['category_'.$fid] = 'display: none';//跟html标签的id属性值有关
  438.                 }
  439.         }
  440.         if(!isset($_G['cookie']['collapse']) || strpos($_G['cookie']['collapse'], '_category_0_') === FALSE) {
  441.                 $collapse['collapseimg_0'] = 'collapsed_no.gif';//伸展或收缩图片
  442.                 $collapse['category_0'] = '';
  443.         } else {
  444.                 $collapse['collapseimg_0'] = 'collapsed_yes.gif';//伸展或收缩图片
  445.                 $collapse['category_0'] = 'display: none';
  446.         }
  447. }
  448. ?>
复制代码


更多Discuz二次开发相关源码分析
1、discuz核心类库class_core的函数注释
http://bbs.zb7.com/thread-514094-1-1.html
2、Discuz的forum_index.php文件的分析
http://bbs.zb7.com/thread-517467-1-1.html
3、discuz x3 与通知表有关的程序源代码分析
http://bbs.zb7.com/thread-517471-1-1.html
4、discuz x3 space_notice.php分析注释
http://bbs.zb7.com/thread-517472-1-1.html
5、discuz x3 uc_client/client.php接口文件分析
http://bbs.zb7.com/thread-517473-1-1.html
6、Discuz中session机制流程图
http://bbs.zb7.com/thread-517443-1-1.html



上一篇:Discuz中session机制流程图
下一篇:discuz x3 与通知表有关的程序源代码分析
clswang 发表于 2015-6-13 21:19:42 来自PC
我能说,我直接看不懂这些玩意吗
沭阳网 www.52jkd.com www.xiaoshuozhu.com www.shuyangweb.com
lyly8 发表于 2016-2-5 02:43:16 来自PC
好资料。。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

快速回复 返回顶部 返回列表