首先先分析一下代码结构。以默认模板为例,打开:/template/default/forum/discuz.htm 约500行。我们可以看到整个的 在线会员的div层(即 `<div id="online" class="bm oll">`)被一个if判断所包围。那么我们就需要先对这个if判断进行分析。 ```html <!--{if empty($gid) && $_G['setting']['whosonlinestatus']}--> ``` 第一个:`empty()` 也就是说这个在判断当前页面是否是分区页面。从上述判断可以看出,if内的内容需要符合非分区情况下显示。 第二个:`$G['setting']['whosonlinestatus']` 这个变量则是后台设置中的变量,因为在后台设置中没有我们需要的仅在分区内显示,所以这个变量我们可以无视。 按照正常的理解,我们只需要把这个判断改为 ```html <!--{if !empty($gid)}--> ``` 也就是说,当gid不空的情况下显示if内的内容,换句话讲就是当存在gid的情况下显示if内的内容。 但是这样会出现`<div id="online" class="bm oll">`内的局部变量 $online 失效的状况。 那么打开/source/module/forum/forum_index.php 约220行发现,在这里确实定义了 !$gid ```php if(!$gid && (!defined('FORUM_INDEX_PAGE_MEMORY') || !FORUM_INDEX_PAGE_MEMORY)) ``` 为了不影响其他功能的正常使用,我们需要将含有$online 变量的 315行-388行。单独提取出一个php文件,再将这个文件以 ```html <!--{eval include TPLDIR.'/common.php';}--> ``` 的方式嵌入到 discuz.htm 文件中。这样就可以 实现在线会员仅在分区中显示了。