不得不说Discuz真的非常强大,以至于不懂任何技术的人都可以操作它,菜鸟都可以用Discuz自带的DIY功能实现一些基本的数据调用及风格。说到数据调用,使用过Discuz的站长都知道它后台自带js数据外调功能,很多站长在实现数据外调时直接拿这个自带功能去实现。但我觉得自带虽然好但是有那么点缺陷:第一,据说js调用不是太好,呵呵;第二,自带的调用方式就是内置的那些,也就是不可能满足你很多需求。 所以今天我要讲的就是用SQL语句实现数据外调,然后再用PHP脚本调用数据到前端实现。我是一个非专业的选手,对很多东西都有一点了解但不精通,唯独数据库还算可以。所以今天我们只讲实现功能,至于前端的一个样式风格大家自己去看着办吧。 案例一:外调5条Discuz门户资讯栏目推荐文章(按发表时间降序排列) 代码如下: $index_bbs_new=array(); $bbs_sql="SELECT aid,title,username FROM `pre_portal_article_title` where catid=1 and tag=128 order by dateline desc limit 0,5"; $b=$db->query($bbs_sql); while($req=$db->fetch_array($b)) { $req['aid'] = $req['aid']; $req['title'] = $req['title']; $req['username'] = $req['username']; $req['url'] = "bbs/portal.php?mod=view&aid=$req[aid]"; $index_bbs_new[] = $req; } SQL代码解释:上面的sql语句中查询语句最基本的了,那就是: select <字段名1>,<字段名2>,.... from 表名(如果是数据库间调用请用数据库名.表名) where 条件 上面的字段我们可以查询Discuz公开的数据词典,就在表pre_portal_article_title中aid表示文章的唯一ID,title表示文章的标题,username表示发布文章的用户的用户名。上面这条语句翻译成我们通常交流就语句就是,在表pre_portal_article_title中查询文章ID、文章标题、文章作者,查询条件是栏目ID为1 (catid=1),文章标签为推荐( tag=128),按照发布时间降序排序(order by dateline desc)",记录数为5条( limit 0,5)。 实例二:调用论坛最新精华帖5条(这个Discuz后台调用有) 调用语句如下(当然样式是取自我做的这个页面),代码如下 $index_bbs=array(); $bbs_sql="SELECT tid,subject,author FROM `pre_forum_thread` where digest>0 order by dateline desc limit 0,5"; $b=$db->query($bbs_sql); while($req=$db->fetch_array($b)) { $req['tid'] = $req['tid']; $req['subject'] = $req['subject']; $req['author'] = $req['author']; $req['url'] = "bbs/forum.php?mod=viewthread&tid=$req[tid]"; $index_bbs[] = $req; } 有了实例一的解释,这里的语句大家查了数据词典就会懂意思的。
|