Discuz! 限制会员发布带链接的帖子
限制较低等级的会员不能发布带链接的帖子(如:新手上路等级的会员不能发),也就是禁用Discuz!代码中的 [url]...[/url] 标签。出于对论坛 SEO 的考虑,同时也为了更好地抑制‘垃圾’帖子对论坛的影响。
由于 [url] 是论坛内置的Discuz!代码,可以禁止某个等级的会员或某个版块不能使用Discuz!代码,但同时会禁止掉其他一些有用的部分,如 [img] 等。
从原理上讲,只要判断该用户的等级为新手上路,在发布、编辑、回复帖子时将 [url] 标签全部过滤掉就能很好地达到目的。同时,以前已经发布的带链接的帖子只要在显示之前根据当前会员等级判断是否过滤掉链接即可(实际上应该判断发帖的会员的等级来确定是否应该过滤链接,没有追求这么完美,也没必要)。下面是操作步骤。
限制游客和新手上路等级会员发布带链接的帖子
打开论坛根目录 post.php 文件,查找:
- $message = isset($message) ? censor(trim($message)) : '';
在下面添加代码:
- //Fufu_if groupid==10 or guest not support: [url]...[/url]
- if((intval($groupid) == 10 || intval($groupid) == 7) && strpos($message, '[/url]') !== FALSE) {
- $message = preg_replace("/\[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\/\/|www\.)([^\[\"']+?))?\](.+?)\[\/url\]/ies", '', $message);
- }
- //Fufu_end
作用是判断当前用户等级是否为新手上路(10)或游客(7),并且在帖子内容中包含 [/url] 标签,那么就替换 [url]...[/url] 内容为空。
禁止游客及新手上路等级会员浏览包含链接的旧帖
打开论坛目录 /include/discuzcode.func.php 文件,查找:
- function parseurl($url, $text) {
在下面添加:
- //Fufu_if groupid==10 or guest not support: [url]...[/url]
- global $groupid;
- if(intval($groupid) == 10 || intval($groupid) == 7) {
- return '';
- }
- //Fufu_end
作用是让新进的会员和游客看到论坛相对整洁,为搜索引擎屏蔽帖子中的链接。
------
我是在 Discuz! 7 中修改的,其他版本作参考,修改前备份原文件。