罗码网络discuz插件模板教程微信小程序安卓电脑软件htmlphp源码下载

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

[DZ教程] Discuz二次开发必备技术手册(持续更新)

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录
6 F6 E: T5 g% V0 ~<a href="member.php?mod=logging&action=login" title="登录">登录</a>5 E# e6 v5 Q  [3 H. Z2 k

8 @  E; _- C' G# n3 R注册9 }) S' A# Y' [) o- @
<a href="member.php?mod=register" title="立即注册">立即注册</a>
) K* ~8 l1 T8 j. p  m2 G
0 {* J8 h) W7 b! P# S忘记密码
* h! A3 V9 J. @1 `6 P<a href="javascript:;" title="找回密码">找回密码</a>
( @1 V+ I+ {, l  i: {8 s( o# r# ~" r1 f8 t! T! [6 u, l, t! v1 M" e) b
购买邀请码 , }; M7 N/ t2 z/ n* F7 y: C/ a
misc.php?mod=buyinvitecode% n. q/ _# T8 t2 C0 K

% F5 D: k& t& ^" H0 u  jJS跳转" s' R* }$ O6 j0 o9 n
onclick="window.location.href='home.php?mod=mobile&do=friend';"
6 T- E9 \8 R, N% d* I6 A# o) ~( D" @/ A, G5 n
JS更换class的名称9 q  K% f6 e+ q$ _
document.getElementById('idname').className='a';
" O' H4 x% ]4 O* udocument.getElementById('idname').style.display='block';
9 M2 X5 c1 L& ]5 |' Sdocument.getElementById("idname").style.marginTop="30px";; O) p  I4 B6 A* z( F4 b
% U1 o5 e% e2 m1 t9 B2 v1 K
批量替换超链接:* V% F4 Q4 {7 o- |* Q
href="[^"]*"$ l& [4 }  Q$ V2 x. g; |
( L" G9 B3 G. F. d+ k! k" X1 w
过滤DZ代码:$ J7 X# i' L! Y
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));: \5 j1 y" _8 S( b" C

4 E" ?, @9 M, O8 M  J. f* i. w8 q调用单个数据
& _4 h3 F' v) ]$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));. J( y3 j6 J% ^2 _  |" r% F: o
: B/ l0 A$ @4 b. {1 w3 ^: L# J  K
调用统计数据
* P9 ?! k: B- g+ t$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));
1 `4 L+ w/ X4 ~: ?3 s% O0 z
& w. O7 c5 W0 W# }/ r单数据表调用
; D# c; ~0 p& S$ D$perpage = 20;
- o; Z( b1 m  N$ |$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );7 I: ?) e; A. A$ l
$start = ($curpage-1)*$perpage;2 p5 b' h/ L1 w/ q( \
$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));# W4 Q% h( o! f7 U' m
//$asklist
( D! a5 F& t# w5 S2 R; B. n1 G+ ?$asklist = array();
' v) i' v% J/ z/ R0 M: Oif ($askcount) {" ]* w3 B; Q$ `2 f, T% E
        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");" c& m1 b- o  x" i* @; T
        while ($value = DB::fetch($query)) {
) O4 x/ E; P- u' p                $asklist[] = $value;
1 V$ y/ g6 Z4 \# Z        }2 F+ L, S1 h# u
}! L$ I. B" i  p1 X! @, U
$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");2 g, `* F2 A% Y1 F5 W, _

! c. E# S  [1 k
/ n3 \/ |2 p$ z# b/ C2 t% _
9 F# @& H. v! D# {( k6 t  ]多数据表调用
- U, M4 n- e8 B4 i. D) M, Y$perpage = 40;
, l$ y* |3 w# T1 x) ]) l) p2 Z" q$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
  I2 m6 ?1 _7 B% N$start = ($curpage-1)*$perpage;0 ?; l/ z3 G8 r/ w% ^
$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 != ''"));
; X4 M: N, u" }//$alist# X0 P9 f. j$ K3 ]" Y1 L
$alist = array();
( ^7 y7 F: `% d- U7 zif ($acount) {
# N: y! q' |- r  q4 W6 @        $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");, P1 c% q- m* S, \: t, u7 }" b
        while ($value = DB::fetch($query)) {
8 ^; t% A" Z! R8 _                $alist[] = $value;
; Q3 K& s, f6 `        }
/ |! B, W+ v! m/ H/ O5 Z}
" N5 e' K& ^3 g4 s% C+ A$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");
5 U& C* s. u) F2 ~% W. \  s" K+ ]  L; [* B1 i
% E! P9 c$ Q7 ~
( x" @+ L" n6 S0 T& q
前台数据显示/ A9 _0 u: X' ~. f
<!--{loop $alist $key $value}-->
, k5 ]' b( ~! m" E( c4 }<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->* s2 q( S/ G+ r0 _
<img src="$tupianfm"><br>$value[authorid]8 e/ x/ ~* F. y$ O  L5 z9 [3 \
<!--{/loop}-->
" D5 n0 D$ R0 v' T+ J4 d
5 E, q4 ?" v& ]) C
3 n2 w- Q! N, j: f" Z% l4 F. {+ i取数据表中符合条件的第一条数据0 g9 N- g, S3 f
$app=array();1 a0 p' ~% ?1 ^
$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");
+ k6 {$ u, [7 i0 d1 V+ x. W7 b- T6 m" O7 }5 S! W7 b
( i3 `  ]" L' l7 a7 _

) F8 C/ s7 k$ b. `7 i人性化时间戳" @  a8 @& E1 ?/ v. \( @
<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->
) R/ S1 v  \* q9 L  L% t<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->
# @/ Z9 ~$ W( a3 R( e* u* I) n
/ o9 Y' F' G, ^5 w2 l! s& n
# K2 r; x$ `: ]# [截取字符字数0 b# F2 z7 v! d8 _- M
<!--{echo cutstr(这里填写参数,40)}-->/ Z$ i. S( z, ]
7 p0 V# p! g1 z& y  o' e
- R. u& c; n1 p$ M# Z3 k
过滤DISCUZ代码+ Y2 a' g) m, |: n' [4 Q
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));0 H9 \. r) n& H! w9 c

. N3 Q& e. ?  u* P: A7 D; X/ o# ]% B6 }* }
写入数据库
% I& y) ]; K: ?' K9 Oif(submitcheck('tijiao')) {5 W0 z( j* }% R5 M' X6 w
        $setarr = array(
) z' S5 J! o* h; B                'tid' => $_GET['topicid'],# B/ w# s$ U3 `% _4 i8 \8 n
                'name' => $_POST['name'],
# n+ ?6 @2 W; a6 [) `# |+ d                'position' => $_GET['position'],
; g0 K4 Q2 T3 r- B2 z/ ]                'dateline' => $_G['timestamp'],0 F" q5 ^& x( m- |3 ], J
        );; c& _* V7 I" |: H
        DB::insert('abc', $setarr, 1);& y0 I. m2 @; m6 z. Y/ i
        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");. `0 W! X' w, |% D  H
        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");
% q  |& u. L0 m) F        showmessage('成功的提示信息', "跳转地址");* O5 I  l5 t5 i+ F  a6 W- `
}
& |/ ]* E! P+ X% R0 O- }2 Q: h8 ~" c% ?; T3 S: H, R* u
4 w/ b$ x/ a7 M/ J

8 _- k  R8 b- ?( H) y表单提交:) e' b7 h3 |" h; Z' p5 a. U8 J; }
<form action="do.php" method="post" autocomplete="off">
9 @- _; r* g$ l1 J' u        <input type="hidden" value="{FORMHASH}" name="formhash" />
; t9 Y/ D& X0 q) h  k        最低奖金:<input name="qi" type="text" value="" /> - \6 B  F; J) E0 [1 U
        最高奖金:<input name="end" type="text" value="" />  / B2 C- \: X$ t$ y- Q! d7 J
        <button value="true" name="tijiao" type="submit">提交设置</button>
0 X- ~3 K# Z% {9 \9 B5 ]) \        <input type="hidden" name="tijiao" value="true" />
6 d+ ]8 E9 w% a  E) v/ w3 K! }3 q</form>3 u# w) C3 L7 ]0 `
6 C# g+ W4 P! \- I. l0 L& i

, Z/ o$ L5 u5 }# s6 H: X, r# e
6 C1 j% c- @/ ~; j- z* Y3 ?( @, I3 O以下两个时间格式是对等关系; }; Z; t2 F! k$ q/ A, g) h
date("Ymd",time());  20150212' g: p0 h( ]; I8 d& Q: l- l7 p
FROM_UNIXTIME(dateline, '%Y%m%d')2 z' b! ~6 N0 x
/ m! |, S: q# O+ }* h
前者用于PHP,后者用于数据库调用的字段的格式化+ k' v' v4 H8 {* {$ L" o& `' ]! o: O

9 D# x+ K2 w5 i0 z% u0 b! a调用图片附件- b& S) p% p: ^1 d2 `/ K1 E
<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->
- ^+ V  a" G2 P( b, k, i  g
! C/ `, j2 P* b( ?8 Z: k
, i* C- v# v0 [) c# j数据库循环嵌套调用
. i1 y1 x& A. L  p' B<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->
' L* V0 e- i. D9 C! N<!--{loop $slides $slide}-->$ ]: x6 X' i; i  y. e
$slide[name]) q" u2 ~7 v4 v. q$ o, E
<!--{/loop}-->' v! y& V. Z# L

. ?, q3 w4 g: s$ E: P( c
- R& ]/ J7 N0 \0 ?* E+ V, aucenter无法登录:
& D7 v. c2 L1 J, J) U打开uc_server/model/admin.php$ D: U) s: Q) R
找到第22行的& v6 u4 E- v( X! ^9 x6 _2 H
$this->cookie_status = 0;
' D0 P% t7 _) J7 O, C. O; m1 s, Z1 E9 z3 f0 \6 d- p

6 X$ v/ [4 M' Q7 d, D4 H改成: z) \# ?4 O' l4 @, t, O
$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;
+ j& Z) {2 b+ n% F$ H$ q  J* z: L
" W0 E3 J1 t* C& Z$ U- d2 }7 v# _" S/ R  w4 m8 b

2 y( V1 w! ]( X% `; O6 u$ y无刷新切换li标签并且同时加载框架页面:
3 A9 `: r" a" P<script type="text/javascript">
* X( d9 X4 Q- g- k! vvar jq = jQuery.noConflict();
/ B' R4 i2 F( g7 u2 F# x, P0 q1 Vjq(function(){
1 T3 i8 x* l5 |4 T2 F. ?$ p, @jq("#changemenu>li").mouseover(function(){
2 o. T; Y' E- M% d/ J$ _3 Vjq("#changemenu>li").each(function(i){
% I* W$ a; O1 ]$ Y4 ]+ wjq(this).removeClass("current"); $ H4 S' X. R4 F
}); 5 C5 i; W* ~2 Z$ @+ n3 H* y
jq(this).addClass("current");
) `5 i. _/ Y* w2 K3 Q2 _; l, p, udocument.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';: f& L  D. @1 w7 F+ z% @
}).mouseout(function(){ # H* J( y' e% ]' q9 n; n
jq(this).addClass("current");
, \" p. T+ b/ |  Z: M' @! W$ |});
7 n' l+ P- W9 T' l2 Q7 S});: a, P9 ?6 R5 E1 }
</script>
; U4 s* Q0 Y" k; d3 n<ul id="changemenu">( F0 l2 I/ C2 ~9 s$ g5 X4 e
   <li class="current" dataid="1"></li>
0 r7 @9 f( a$ h   <li dataid="2"></li>. b) W+ u. w. \" O
</ul>1 X% j$ {7 O- j
<div id="changenr"></div>+ ?: W4 }5 V- P

! S# C7 C/ F7 t0 x$ a# T1 E
6 O$ m) h! g1 F9 C8 D& Q0 N7 D' L
快速发帖
2 J3 [! |# o7 Z. X" d# m<a href="forum.php?mod=misc&action=nav">发布新话题</a>2 Y8 x( i% ?4 n9 }4 E
0 _$ o/ c4 ~, d, ^
  T0 {  v0 k: Y/ X; H2 _) v' Z

7 T, W% B4 u$ w9 @DISCUZ JSON数据解析获取& p5 b9 J3 i; W& X( @
$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';; ~% S( s4 z8 g$ ?& ?
$newstr = str_replace("\","",$str);4 r% b  e* H1 Q7 U8 N( u1 ?9 ~
$data = unserialize($newstr);4 L* z- v; P4 u0 Q+ S! ~$ x( k& a
echo $data[sitename];//输出结果为源码哥
( V4 q5 k! u4 H5 j- V# U$ F* c7 V0 O, q

0 c+ V& v1 m  V* n
* Q# s8 t; L; kDISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:. t% K+ F* q  g
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);8 E  u* {1 T$ v3 K% ]! U2 |  ^

, K& [) _2 |8 W) }9 {
0 h: _4 x5 q5 N1 m0 S* M! w修改为:4 H7 C, j8 m# t# o0 K
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);
( }& X* Q" n/ g0 @
* M" m  K; x% ~8 I1 t1 r) H1 Q# h. i5 ?( `

- |& V1 k& L2 DLI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):& {/ @% J. O! h$ C$ o
<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>
$ k0 K1 ~7 I8 f5 l  ]7 n/ I<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>/ v; q3 T2 q0 x
<div class="list">. C+ T6 C& k" Z9 N) x7 B, G/ b  V
        <ul>
0 Z) o: S  f7 q# v, E$ g- z5 h        <li>源码哥</li>
8 x6 u% a% O& d! J& s! j. J. H# A        <li>源码哥</li>
/ R1 b9 o8 {2 W; C- w$ u  a        <li>源码哥</li>+ u: T4 ]  u$ D2 O8 Y: L' t
        <li>源码哥</li>1 y% [. E) ^4 N' l4 l1 @( L
        <li>源码哥</li>% x- X$ G1 l1 H3 Z. z/ Q. h( K
        <li>源码哥</li>
' m+ ?) [" P1 O$ d. Z  w1 T# A    </ul>
' q- l; v8 h9 _$ Y) |! ~4 p</div>
6 J9 v  p, P$ l7 D# e<script type="text/javascript">( r+ `! ^- E/ F& l5 S8 ^
    $('.list li:nth-child(3n)').css('marginRight', '0');* `+ ?8 E- x- S" }" ?
</script>
& D2 }5 M( L- T! s) f4 ?$ ?' ^! u; Q' [1 Q

; b  p( S. N8 t3 P. @5 l4 C# G3 {3 i% u4 X
常用词汇
4 W1 D  P' H. Z7 ?1 Iselect 选择+ M+ n8 R9 F* G2 G" K
count 总数
- d. \: N3 `+ A( ztable 表
* J# |# b4 }+ V6 zwhere 条件
8 k" e# |; s' v3 ?- P$ V8 ^result 结果
7 p3 k" F( g: w5 Jperpage 每页
% P7 F# O! Q, t& ]% U2 N3 i8 G& ecurpage 当前页  ]4 k  n6 Z# F: v2 I
update 更新# B) N0 F8 D% i. S" n% R, H; U* O, L
delete 删除. y* ~" ~- E5 [) u* V
insert 写入
$ s& J0 z4 [7 t# mdateline 日期/ \) @! x3 e& d1 h  N" s6 l
time 时间
) r' P$ {$ \1 }) ?* j& w' xecho 输出   <?php   echo '123';   ?>
: B) [1 z- R2 e6 T/ S3 Y  Hmulti 分页函数
. d$ W- \4 Z! s" G* X- a- C1 ]if 如果: @. Z; ^5 s  m8 Q
else 否则3 h( d# h7 p9 u* q
elseif
& ~. p! p  c0 W: ^9 v5 c8 Lstart 起始
1 C' n7 M3 P- H; nlimit 限制  limit 10: x( l/ }3 E' ?5 b; ?9 ?
DESC 倒序
+ r' y( l7 p3 g" k+ FASC 正序
3 M7 Z# e) u/ t" R3 W  e5 W/ t/ m* H
5 M% B& C& s+ L5 E: _

8 W& g8 I! o' q( q* G7 a活动帖发布页面核心处理文件:, C: f) m0 @, O0 _) p
source\class\extend\extend_thread_activity.php
' b$ o( U7 u+ T0 @5 k
+ r% ]2 b; @, n分类信息解析文件& M4 Y& ^3 X& w: m
source\function\function_threadsort.php
" ?$ m$ u+ G! m: W6 T* j+ y1 |" EDiscuz模版运行php代码
7 z1 ]3 X) K0 x" X0 U& X4 V<!--{eval echo'源码哥';}-->/ ?5 X* J8 C! Y- C: t8 d/ T
6 x$ T# D- K, v- b( N/ G7 `
<!--{eval}-->
5 G* t: X* ]4 p1 R1 M6 Kecho'源码哥';! z  C/ L3 w5 R) b
<!--{/eval}-->
1 h( e6 f. f& q  w  o4 [7 ~* B  Q5 P* M标签获得焦点后触发js
0 @# A  ]6 y8 M8 J6 oonfocus="ymgcom()"! b# w" y/ V5 x+ M' Z

: _& I# X% U* M% T+ j2 y- C: B$ \- G8 n: H" v8 e( C7 I
标签失去焦点后触发js + n2 f' Z1 w+ Q% a
* {& z* {! y, a- T0 W* R
onblur="ymgcom();"# h, y6 b: @9 c' B' [) v- Z) i

: @2 g3 V/ ]2 f8 D" F9 r2 U( ]! s6 i3 y: X! j- d* d
密码输出1*****6
4 M# r: k& [6 q) e  S# {//原密码为$_GET['password']
) L( Z! z: K- ]8 ~( A  D$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);
4 A' h( t; u' F6 h9 D, k+ mecho $password;+ M, O: g* o" I% `. D' T0 p% G
1578843666617.jpeg

想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
yyc男神 发表于 2020-1-21 03:31:41 | 显示全部楼层
看帖回帖是美德!

回复

使用道具 举报

雨后晴天 发表于 2020-1-21 04:32:56 | 显示全部楼层
帮帮顶顶!!

回复

使用道具 举报

MR.Z 发表于 2020-1-21 04:46:00 | 显示全部楼层
路过,支持一下啦

回复

使用道具 举报

66666 发表于 2020-1-21 16:44:35 | 显示全部楼层
这是什么东东啊

回复

使用道具 举报

 shu1332725 发表于 2020-1-21 17:24:28 | 显示全部楼层
路过,支持一下啦

回复

使用道具 举报

foryun 发表于 2020-1-22 03:36:46 | 显示全部楼层
真是 收益 匪浅

回复

使用道具 举报

666男神 发表于 2020-1-24 23:52:00 | 显示全部楼层
相当不错,感谢无私分享精神!

回复

使用道具 举报

全村的希望 发表于 2020-1-26 11:18:50 | 显示全部楼层
前排支持下

回复

使用道具 举报

jjj111 发表于 2020-1-26 12:32:02 | 显示全部楼层
不错 支持下

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

QQ|Archiver|手机版|小黑屋|罗码 ( 粤ICP备17073043号 )https://beian.miit.gov.cn/#/home

GMT+8, 2026-4-15 10:29 , Processed in 0.447270 second(s), 61 queries .

Powered by 罗码网络! X3.4

© 2001-2017

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