discuzx 3.5 x3.4开发手册-常用函数和模板调用方法[长期更新]
登录
注册
忘记密码
购买邀请码
JS跳转
JS更换class的名称
批量替换超链接:
过滤DZ代码:
调用单个数据
调用统计数据
单数据表调用
多数据表调用
前台数据显示
取数据表中符合条件的第一条数据
人性化时间戳
截取字符字数
过滤DISCUZ代码
写入数据库
表单提交:
以下两个时间格式是对等关系
前者用于PHP,后者用于数据库调用的字段的格式化
调用图片附件
数据库循环嵌套调用
ucenter无法登录:
改成
无刷新切换li标签并且同时加载框架页面:
快速发帖
DISCUZ JSON数据解析获取
DISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:
修改为:
LI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):
常用词汇
活动帖发布页面核心处理文件:
分类信息解析文件Discuz模版运行php代码或标签获得焦点后触发js
标签失去焦点后触发js
密码输出1*****6常用:
获取数组
获取对应数据表中一条数据的值返回为数组仅有数据的调用返回为字符串统计数据返回为int写入数据(表名,键值数组,条件)更新数据(表名,键值数组,条件)删除数据(表名,键值数组,条件)其他不怎么用的手册数据库类定义\source\class\table\插件新增的目录使用方法mytablename
在目录:source/plugin/mypluginid/table/table_mytablename.php
使用类名称:table_mytablename
使用最佳时间:
数据库常用方法
常用词
选择选择;总数;表格表;条件在哪里;结果结果;每页每页;当前页;更新更新;删除删除;插入写入;日期时间页;时间时间;多分函数;如果;否则;开始视线;限制限制;DESC倒序;ASC正序;
调用单条数据调用统计数据单数据表调用获取数组多数据表调用前台数据显示人性化时间截取字符数写入数据库更新数据库表单提交:以下两个时间格式是对等关系用于PHP,用于后期数据库调用的事件的发生
调用图片附件
- <a href="member.php?mod=logging&action=login" title="登录">登录</a>
注册
- <a href="member.php?mod=register" title="立即注册">立即注册</a>
忘记密码
- <a href="javascript:;" title="找回密码">找回密码</a>
购买邀请码
- misc.php?mod=buyinvitecode
JS跳转
- onclick="window.location.href='home.php?mod=mobile&do=friend';"
JS更换class的名称
- document.getElementById('idname').className='a';
- document.getElementById('idname').style.display='block';
- document.getElementById("idname").style.marginTop="30px";
批量替换超链接:
- href="[^"]*"
过滤DZ代码:
- preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
调用单个数据
- $a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));
调用统计数据
- $a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));
单数据表调用
- $perpage = 20;
- $curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
- $start = ($curpage-1)*$perpage;
- $askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));
- //$asklist
- $asklist = array();
- if ($askcount) {
- $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");
- while ($value = DB::fetch($query)) {
- $asklist[] = $value;
- }
- }
- $multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");
多数据表调用
- $perpage = 40;
- $curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
- $start = ($curpage-1)*$perpage;
- $acount = DB::result(DB::query("SELECT count(*) FROM ".DB::table('forum_forum')." b LEFT JOIN ".DB::table('forum_forumfield')." bf ON bf.fid=b.fid WHERE b.type='sub' AND b.status = 3 AND bf.icon != ''"));
- //$alist
- $alist = array();
- if ($acount) {
- $query = DB::query("SELECT bf.*, b.* FROM ".DB::table('forum_forum')." b LEFT JOIN ".DB::table('forum_forumfield')." bf ON bf.fid=b.fid WHERE b.type='sub' AND b.status = 3 AND bf.icon != '' ORDER BY bf.shoplevel DESC, b.commoncredits DESC, bf.fid DESC LIMIT $start,$perpage");
- while ($value = DB::fetch($query)) {
- $alist[] = $value;
- }
- }
- $multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");
前台数据显示
- <!--{loop $alist $key $value}-->
- <!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->
- <img src="$tupianfm"><br>$value[authorid]
- <!--{/loop}-->
取数据表中符合条件的第一条数据
- $app=array();
- $app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");
人性化时间戳
- <!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->
- <!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->
截取字符字数
- <!--{echo cutstr(这里填写参数,40)}-->
过滤DISCUZ代码
- preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
写入数据库
- if(submitcheck('tijiao')) {
- $setarr = array(
- 'tid' => $_GET['topicid'],
- 'name' => $_POST['name'],
- 'position' => $_GET['position'],
- 'dateline' => $_G['timestamp'],
- );
- DB::insert('abc', $setarr, 1);
- $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");
- $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");
- showmessage('成功的提示信息', "跳转地址");
- }
表单提交:
- <form action="do.php" method="post" autocomplete="off">
- <input type="hidden" value="{FORMHASH}" name="formhash" />
- 最低奖金:<input name="qi" type="text" value="" />
- 最高奖金:<input name="end" type="text" value="" />
- <button value="true" name="tijiao" type="submit">提交设置</button>
- <input type="hidden" name="tijiao" value="true" />
- </form>
以下两个时间格式是对等关系
- date("Ymd",time()); 20150212
- FROM_UNIXTIME(dateline, '%Y%m%d')
前者用于PHP,后者用于数据库调用的字段的格式化
调用图片附件
- <!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->
数据库循环嵌套调用
- <!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->
- <!--{loop $slides $slide}-->
- $slide[name]
- <!--{/loop}-->
ucenter无法登录:
- 打开uc_server/model/admin.php
- 找到第22行的
- $this->cookie_status = 0;
改成
- $this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;
无刷新切换li标签并且同时加载框架页面:
- <script type="text/javascript">
- var jq = jQuery.noConflict();
- jq(function(){
- jq("#changemenu>li").mouseover(function(){
- jq("#changemenu>li").each(function(i){
- jq(this).removeClass("current");
- });
- jq(this).addClass("current");
- document.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';
- }).mouseout(function(){
- jq(this).addClass("current");
- });
- });
- </script>
- <ul id="changemenu">
- <li class="current" dataid="1"></li>
- <li dataid="2"></li>
- </ul>
- <div id="changenr"></div>
快速发帖
- <a href="forum.php?mod=misc&action=nav">发布新话题</a>
DISCUZ JSON数据解析获取
- $str = 'a:2:{s:8:"sitename";s:8:"dz插件网";s:3:"pic";s:12:"ymg6.jpg";}';
- $newstr = str_replace("","",$str);
- $data = unserialize($newstr);
- echo $data[sitename];//输出结果为dz插件网
DISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:
- $result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);
修改为:
- $result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);
LI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):
- <script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>
- <style>ul,li{margin:0; padding:0; list-style:none;}.list{width:100%; margin:0 auto;}.list li{width:32%; float:left; margin-right:2%; background:#0092B9; text-align:center; color:#fff; height:300px; line-height:300px; margin-bottom:10px;}</style>
- <div class="list">
- <ul>
- <li>dz插件网</li>
- <li>dz插件网</li>
- <li>dz插件网</li>
- <li>dz插件网</li>
- <li>dz插件网</li>
- <li>dz插件网</li>
- </ul>
- </div>
- <script type="text/javascript">
- $('.list li:nth-child(3n)').css('marginRight', '0');
- </script>
常用词汇
- select 选择
- count 总数
- table 表
- where 条件
- result 结果
- perpage 每页
- curpage 当前页
- update 更新
- delete 删除
- insert 写入
- dateline 日期
- time 时间
- echo 输出 <?php echo '123'; ?>
- multi 分页函数
- if 如果
- else 否则
- elseif
- start 起始
- limit 限制 limit 10
- DESC 倒序
- ASC 正序
活动帖发布页面核心处理文件:
- source\class\extend\extend_thread_activity.php
分类信息解析文件
- source\function\function_threadsort.php
- <!--{eval echo'dz插件网';}-->
- <!--{eval}-->
- echo'dz插件网';
- <!--{/eval}-->
- onfocus="ymgcom()"
标签失去焦点后触发js
- onblur="ymgcom();"
密码输出1*****6
- //原密码为$_GET['password']
- $password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);
- echo $password;
获取数组
- $a = DB::fetch_all("SELECT title FROM ".DB::table('abc')." WHERE uid = '".$uid."'");
获取对应数据表中一条数据的值返回为数组
- $a = DB::fetch(DB::query("SELECT * FROM ".DB::table('abc')." WHERE id = '".$id."'"));
- $a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));
- $a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));
- DB::insert('abc', $setarr, 1);
- DB::update('abc', $setarr, 1);
- DB::delete('abc', $setarr, 1);
- DB::table($table) //获取带前缀的表名
- DB::delete($table, $condition, $limit = 0, $unbuffered = true) //删除数据
- DB::insert($table, $data, $return_insert_id = false, $replace = false, $silent = false) //插入数据
- DB::update($table, $data, $condition, $unbuffered = false, $low_priority = false)//更新
- DB::insert_id()//返回插件的自增长id
- DB::fetch_first($sql, $arg = array(), $silent = false) //取查询的第一条数据fetch
- DB::fetch_all($sql, $arg = array(), $keyfield = '', $silent=false) //查询并fetch
- DB::result_first($sql, $arg = array(), $silent = false)//查询结果集的第一个字段值
- DB::query($sql, $arg = array(), $silent = false, $unbuffered = false) //普通查询 一条sql语句
- DB::limit($start, $limit = 0) //limit条件
- DB::order($field, $order = 'ASC')//返回排序
- DB::field($field, $val, $glue = '=')//返回字段条件 $val可以为数组
- C::t('tablename')->method();
在目录:source/plugin/mypluginid/table/table_mytablename.php
使用类名称:table_mytablename
使用最佳时间:
- C::t('#mypluginid#mytablename')->method();
数据库常用方法
常用词
选择选择;总数;表格表;条件在哪里;结果结果;每页每页;当前页;更新更新;删除删除;插入写入;日期时间页;时间时间;多分函数;如果;否则;开始视线;限制限制;DESC倒序;ASC正序;
调用单条数据
- $qishi = DB::result(DB::query("SELECT qi FROM " .DB::table('jiangchi')."WHERE id = '1'));
- $qishi ;qi: 字段;jiangchi :表;id = 1 :条件;
- $qishi = DB::result(DB::query("SELECT count(*) FROM " .DB::table('jiangchi')."WHERE id = '1'));
- $perpage = 20;//页数
- $curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );//获取当前页代码
- $start = ($curpage-1)*$perpage;//获取起始数据
- $askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1 AND FROM_UNIXTIME(dateline, '%Y%m%d') = '$jintian'"));
- //$asklist
- $asklist = array();
- if ($askcount) {//如果有数据
- $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");//根据tid正序排序,limit起始到显示
- while ($value = DB::fetch($query)) {
- $asklist[] = $value;
- }
- }
- $multi = multi($askcount, $perpage, $curpage, "portal.php?mod=topic&topic=ask");
- $add = DB::fetch_first("SELECT * FROM ".DB::table('peach_webmaster')." WHERE uid=".$uid);
- $perpage = 40;
- $curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
- $start = ($curpage-1)*$perpage;
- $acount = DB::result(DB::query("SELECT count(*) FROM ".DB::table('forum_forum')." b LEFT JOIN ".DB::table('forum_forumfield')." bf ON bf.fid=b.fid WHERE b.type='sub' AND b.status = 3 AND bf.icon != ''"));
- //$alist
- $alist = array();
- if ($acount) {
- $query = DB::query("SELECT bf.*, b.* FROM ".DB::table('forum_forum')." b LEFT JOIN ".DB::table('forum_forumfield')." bf ON bf.fid=b.fid WHERE b.type='sub' AND b.status = 3 AND bf.icon != '' ORDER BY bf.shoplevel DESC, b.commoncredits DESC, bf.fid DESC LIMIT $start,$perpage");
- while ($value = DB::fetch($query)) {
- $alist[] = $value;
- }
- }
- $multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");
- <!--{loop $alist $key $value}-->
- <!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->
- $value[authorid]
- <!--{/loop}-->
- <!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->
- <!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->
- <!--{echo cutstr(这里填写参数,40)}-->
- if(submitcheck('tijiao')) {
- $setarr = array(
- 'tid' => $_GET['topicid'],
- 'name' => $_POST['name'],
- 'position' => $_GET['position'],
- 'dateline' => $_G['timestamp'],
- );
- DB::insert('forum_poststick', $setarr, 1);
- $query = DB::query("UPDATE ".DB::table('forum_thread')." SET stickreply='1'
- WHERE tid='$tid'");
- $query = DB::query("DELETE FROM ".DB::table('forum_post')."
- WHERE pid='$pid'");
- showmessage('成功的提示信息', "forum.php?mod=viewthread&tid=$tid");
- }
- $setarr = array(
- 'uid' => $uid,
- 'name' => $name,
- 'url' => $url,
- 'datatime' => $datatime,
- );
- DB::update('peach_webmaster',$setarr,1);
- <form action="do.php?op=jiangchi&con=yes" method="post" autocomplete="off">
- <input type="hidden" value="{FORMHASH}" name="formhash" />
- 最低奖金:<input name="qi" type="text" value="$qishi" />
- 最高奖金:<input name="end" type="text" value="$zhzh" />
- <button value="true" name="tijiao" type="submit">提交设置</button>
- <input type="hidden" name="tijiao" value="true" />
- </form>
- date("Ymd",time()); 20150212
- FROM_UNIXTIME(dateline, '%Y%m%d')
调用图片附件
- <!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->