立即注册 登录
彼岸网 返回首页

天香公主的个人空间 http://www.bian-wang.com/discuz/?10005 [收藏] [复制] [分享] [RSS] txgz999@yahoo.com

日志

Discuz功能改进:支持隐藏群组和群组分类

热度 3已有 236 次阅读2017-7-1 11:42 PM |个人分类:Discuz

网友牛肉炖土豆希望添加隐藏群组和群组分类的功能 。做起来发现比我想象的要复杂些。有多处需要有难分优劣的取舍。本文记录下修改时有关的考量。具体的代码修改可参看附件。

1。数据库的改动
群组和群组分类和板块一样都记录在数表forum_forum里。如何记载某群组或群组分类是隐藏的这个事实呢?虽然Discuz支持隐藏板块,但数据库里并没用单独的表列在记载信息。它用的是一个叫status的表列,它被同时用来区分板块和群组,以及区分隐藏板块和显示板块:0代表隐藏板块,1代表显示板块,3代表群组。开始时我用了一个看似自然的选择:用2来代表隐藏群组,而3改成显示群组。好处是不用修改数据库结构。但问题是有多个脚本文件和模版文件里都用status是否为3来区分板块和群组/群组分类,所以这些文件都需要修改。最后决定添加一个叫hide的新表列用来记载隐藏这个信息。这样做的好处是不改变status的含义,所以不会影响任何板块文件。而对群组文件而言,可以有针对性的添加代码来隐藏需要隐藏的群组和分类。

2。类table_forum_forum
文件source/class/table/table_forum_forum.php是Discuz程序和数表forum_forum联系的桥梁。在forum_forum里提取和存储数据都是通过它来实现的。要不要在其中的函数里加上对hide的判断呢?加的话可以减少对处理页面的文件的修改,但缺点时要检查每个函数的用途才能确认其是否需要加对hide值的限制。而且遇到一个函数被两处所用时,一处要隐藏群组,一处要显示全部群组时,就要对这个函数加更多的修改。检查了Discuz对隐藏板块的处理发现对隐藏板块的特殊处理大多在处理各网页的代码里实现,这样做的好处是table_forum_forum里的函数可以相对有普适性。我们也遵循这个方法,因此仅对该文件做些简单的改动,目的是使得处理群组及群组分类的函数在提供它们的信息时包含hide的值。

3。管理中心里的群组页admincp_group
需要在管理中心里添加显示和隐藏群组和群组分类的功能。管理中心里的群组页都是由脚本文件source/admincp/admincp_group.php实现的。修改该文件,在群组管理页中的群组分类列表里加上隐藏/显示链接;在群组管理页中的群组列表里加上隐藏/显示链接。
做完这部分,我们已经可以通过管理中心来将群组分类和群组的hide值在0和1中变化。

4。修改相关显示页
首先要理解隐藏的意思。检查隐藏板块后发现它们没在论坛页列表里显示,但是如果知道该板块的fid,进而知道该板块页的url的话,还是有可能进入该板块的。所以这里的隐藏的意思仅是让它不在列表页显示,而不影响用户进入。所以隐藏群组和分类也用同样方式。试想下如果我们用status等于2来代表隐藏群组和分类的话,我们就要检查
  • 有关版块的网页如果有用status不等于3作为区别版块和群组的标志的话,需要改成对等于0或1的判断
  • 有关群组的管理网页应该显示包括隐藏群组在内的所有群组。所以如果有对status的检查,就需要加上等于2的情形
  • 普通网页里有关群组的详情页应该不基于status决定是否显示群组。所以如果有对status的检查,就需要加上等于2的情形
  • 普通网页里有关群组的列表页应该仅显示不隐藏的群组。所以如果没有对status的检查,就需要加上等于3的要求
虽然不难,但由于这样的代码散布在处理各网页的文件里,所以有多个文件要修改,据不完全统计至少有18个文件要修改。而现在我们用hide的值来代表隐藏群组和分类的话,我们只要找到要修改的群组和分类列表页的代码加上有关hide值的判断。

首先要改的是主导航栏里点击群组进入的群组分类列表页所用的模版文件template/default/group/index.htm:

在同一页的右下角还有个群组积分排行,也要将隐藏群组从那里去掉。


点击上述网页里的一个群组后就进入了群组列表页,我们也需要修改这个网页所用的模版文件 template/default/group/type.htm:


再次要在版块的推荐群组列表里去掉隐藏群组,这需要修改文件 source/function/cache/cache_forumrecommend.php:


下载文件: http://www.bian-wang.com/discuz/data/userupload/10005/hidegroup.zip

发表评论 评论 (7 个评论)

回复 牛肉炖土豆 2017-7-7 08:39 AM
天香公主: 谢谢,我更新了下载文件,将隐藏群组从版块的推荐群组列表里去掉了。
了解了,非常感谢提醒!
回复 天香公主 2017-7-5 09:20 PM
牛肉炖土豆: 大力支持!这个我在测试过程中,还未发现BUG,非常好用!
谢谢,我更新了下载文件,将隐藏群组从版块的推荐群组列表里去掉了。
回复 牛肉炖土豆 2017-7-3 04:03 AM
大力支持!这个我在测试过程中,还未发现BUG,非常好用!
回复 carry0987 2017-7-3 03:35 AM
ladyff: 原来可以提需求了啊
可不可以针对注册邮箱做个插件,实现下面的功能
1. 注册用户可以修改1次邮箱,修改后就不能再次修改。(如果可以后台设定可以修改几次最好) ...
在請教天香大神前,最好先去百度一下問題,真的沒有解決方法再將自己的思路整理後,發到彼岸網這裡,這樣子天香大神才能比較容易理解你的問題與需求
回复 天香公主 2017-7-3 01:33 AM
ladyff: 原来可以提需求了啊
可不可以针对注册邮箱做个插件,实现下面的功能
1. 注册用户可以修改1次邮箱,修改后就不能再次修改。(如果可以后台设定可以修改几次最好) ...
   要不这样吧,你先写篇博文,介绍下你的思路,做了哪些修改,又遇到了什么问题。也许我能给你点参考意见
回复 ladyff 2017-7-3 12:58 AM
原来可以提需求了啊
可不可以针对注册邮箱做个插件,实现下面的功能
1. 注册用户可以修改1次邮箱,修改后就不能再次修改。(如果可以后台设定可以修改几次最好)
2. 特殊邮箱用户,比如@yahoo.com.cn,可以直接修改邮箱,不受上面的限制。
回复 carry0987 2017-7-2 10:51 PM
居然要修改數據庫?已經好久沒看到天香的教學中說要修改數據庫了

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

小黑屋|Archiver|彼岸网  

Powered by Discuz! X3.1 © 2001-2014 Comsenz Inc.
GMT-4, 2017-9-21 06:57 PM , Processed in 0.061884 second(s), 19 queries.

返回顶部