Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

X2群组推送和群组\版块关联

[复制链接]
nxy105 发表于 2011-4-28 15:11:12 | 显示全部楼层 |阅读模式
简单介绍一下两者的原理:

1.群组推送

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

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

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

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

推送的几步重要操作在topicadmin_moderate.php的567行附近:
  1. DB::query("INSERT INTO ".DB::table('forum_thread')." (fid, readperm, author, authorid, subject, dateline, lastpost, lastposter, views, replies, displayorder, digest, closed, special, attachment, isgroup)
  2. 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表里有数据。这意味着什么呢,意味着实际这个主题是不存在的。
  1. $newtid = DB::insert_id();
  2. DB::query("UPDATE ".DB::table('forum_thread')." SET closed='$newtid' WHERE tid='$thread[tid]'");
复制代码
特别留意一下这两步操作,取插入数据的id,将插入的id更新到原群组主题的数据的closed字段中,这时候明白closed字段的含义了吗?是的,就是表示该主题绑定的主题的id(之前添加的主题的closed字段也做了对应的更新)。

在forumdisplay_list.htm模板里被推送的数据是这样操作的:
  1. <!--{if $thread['related_group'] == 0 && $thread['closed'] > 1}-->
  2. <!--{eval $thread[tid]=$thread[closed];}-->
  3. <!--{/if}-->
复制代码
用推送的主题的实际tid替代显示的tid。
这里有一点需要注意,因为这个列表页显示的主题并不会随原主题信息的改变而改变,而是保持推荐时的状态不会改变,除了群组里的原主题被删除。

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



提交后数据会保存到forum_forumfield表中的relategroup字段中。
在读取主题列表forum_forumdisplay.php中读取的当前版块所关联的版块\群组的代码如下:
  1. if($_G['forum']['relatedgroup']) {
  2. $relatedgroup = explode(',', $_G['forum']['relatedgroup']);
  3. $relatedgroup[] = $_G['fid'];
  4. $fidsql = " t.fid IN(".dimplode($relatedgroup).")";
  5. }
复制代码
在主题列表页就可以显示所有关联的版块的主题了(显示,但不可修改)。

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

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

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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-22 11:19 , Processed in 0.029821 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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