打印 上一主题 下一主题

Discuz群组推送和群组,版块关联

跳转到指定楼层
楼主
SetYun 发表于 2018-10-20 10:17:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
简单介绍一下两者的原理:

1.群组推送

在群组管理中,对群组中的帖子管理员可以进行推送到版块的操作。

推送后会在相应的版块看到所推送的帖子

主题的tid与在群组中主题的tid相同。

这与关联的群组中显示的帖子有区别吗?答案当然是有!
我们来看看群组推送都执行了什么操作:

推送的几步重要操作在topicadmin_moderate.php的567行附近:
  • DB::query("INSERT INTO ".DB::table('forum_thread')." (fid, readperm, author, authorid, subject, dateline, lastpost, lastposter, views, replies, displayorder, digest, closed, special, attachment, isgroup)
  • VALUES ('$moveto', '$thread[readperm]', '".addslashes($thread['author'])."', '$thread[authorid]', '".addslashes($thread['subject'])."', '$thread[dateline]', '".TIMESTAMP."', '".addslashes($thread['lastposter'])."', '$thread[views]', '$thread[replies]', '0', '$thread[digest]', '$thread[tid]', '$thread[special]', '$thread[attachment]', '$thread[isgroup]')");

上面的代码将群组的主题数据添加(可以说是复制一份)到forum_thread表里,注意仅仅是插入到forum_thread表里,并没有在forum_post表里有数据。这意味着什么呢,意味着实际这个主题是不存在的。
  • $newtid = DB::insert_id();
  • DB::query("UPDATE ".DB::table('forum_thread')." SET closed='$newtid' WHERE tid='$thread[tid]'");

特别留意一下这两步操作,取插入数据的id,将插入的id更新到原群组主题的数据的closed字段中,这时候明白closed字段的含义了吗?是的,就是表示该主题绑定的主题的id(之前添加的主题的closed字段也做了对应的更新)。

在forumdisplay_list.htm模板里被推送的数据是这样操作的:
  • <!--{if $thread['related_group'] == 0 && $thread['closed'] > 1}-->
  • <!--{eval $thread[tid]=$thread[closed];}-->
  • <!--{/if}-->

用推送的主题的实际tid替代显示的tid。
这里有一点需要注意,因为这个列表页显示的主题并不会随原主题信息的改变而改变,而是保持推荐时的状态不会改变,除了群组里的原主题被删除。

2.关联版块
关联版块的功能比较简单,首先在后台--论坛--版块--选定一个版块--扩展设置中设置所要关联的版块



提交后数据会保存到forum_forumfield表中的relategroup字段中。
在读取主题列表forum_forumdisplay.php中读取的当前版块所关联的版块\群组的代码如下:
  • if($_G['forum']['relatedgroup']) {
  • $relatedgroup = explode(',', $_G['forum']['relatedgroup']);
  • $relatedgroup[] = $_G['fid'];
  • $fidsql = " t.fid IN(".dimplode($relatedgroup).")";
  • }

在主题列表页就可以显示所有关联的版块的主题了(显示,但不可修改)。

这两者都可以在版块的主题列表页显示群组的主题,但有所区别,推送会创建一个空主题并将其与原主题绑定,而关联版块是直接取其关联版块的数据。因此,推送的主题数据在列表页不会直接更新,而关联版块的主题数据会随着所关联的版块内数据的变化而变化。

特别注意一下,如果同时关联版块并推送某一主题,则在列表页会出现相同的主题,而如果有一个版块关联该版块,会显示从群组推送过来的数据。

例如:群组:主题1(推送到版块1)
          版块1(关联群组):主题1(关联主题,不可修改),主题1(推送主题,可删除)
          版块2(关联版块1):主题1(关联主题,关联的是版块1的推送主题,不可修改)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|SetYun ( 辽ICP备16005250号

GMT+8, 2024-12-22 09:24 , Processed in 0.036029 second(s), 5 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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