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

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

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

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录# D2 Z' [  x* a6 L
<a href="member.php?mod=logging&action=login" title="登录">登录</a>
1 n0 g% c( M' Z" m" j* L- m' r
- ]6 X! D+ m2 Q9 N注册
0 d' h# U: P1 j( Q, j<a href="member.php?mod=register" title="立即注册">立即注册</a>) l# g2 S" d$ d5 D; w

% h: o* G5 ]1 h! P: }. K忘记密码
% C  j$ S* J' {9 p<a href="javascript:;" title="找回密码">找回密码</a>: s$ u2 G7 f( ^5 [, q

) |$ u" e& U7 q0 h购买邀请码 8 t& k0 m! m8 _
misc.php?mod=buyinvitecode/ c% t/ V& ~& ]3 T5 I- L

$ O5 Y8 A( ~* x) ]2 zJS跳转
8 \2 s2 ], K7 Oonclick="window.location.href='home.php?mod=mobile&do=friend';"
* K) b9 T$ Z/ A0 K; v: ~' E8 \" T  d. m" A  R, R) i6 r8 }( T5 B
JS更换class的名称) N* m2 ?* K' O0 p* {) S& d8 ^9 U
document.getElementById('idname').className='a';3 r3 K7 s8 Z: n" @% b4 @: O6 w
document.getElementById('idname').style.display='block';( k  j# Z. Y5 V* A& q! F0 J1 @
document.getElementById("idname").style.marginTop="30px";. B  a! _' o8 A6 G
1 f! I/ a' l, d; q7 Y
批量替换超链接:  D6 Q" g# k: ~& c6 ]% n  ^9 w. c
href="[^"]*"# b+ G" U" K5 c; O/ Z& @, I/ h7 L

! c& I$ X3 L$ ?% ^# B+ |7 p过滤DZ代码:8 P% h5 J2 x7 A# q# V6 J
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
. O( ]& V* ]8 R# @* p+ M: l
2 V  z: `: n. U; H调用单个数据
* x5 b, p. n) K$ P8 e' ^' `$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));
2 q9 _, U, e* b: I+ ]
' ]: M) v) `8 x# Z调用统计数据
# ]7 [8 a1 Z+ I% h: Z) x$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));8 B& F; f6 E7 ?+ V+ V* S1 e6 F
) t0 i( @' Q" S( h
单数据表调用
5 {( n3 [+ k& K: O6 _$perpage = 20;
6 N& u* [" u7 l% j$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
2 B  {- d; `# J6 `& V  T$start = ($curpage-1)*$perpage;4 D: [" T' u0 X* T& o) p$ Z+ m
$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));
0 H& o- y2 c; }2 N9 o$ Z8 L! j: J//$asklist( F9 s. k9 l$ s' q
$asklist = array();
1 o8 l! Z. E8 R, w. wif ($askcount) {
* h! E2 V0 n4 f4 B9 M) t0 J" v. M        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");
) I  s7 d* U1 Y$ @0 s( y) p  _        while ($value = DB::fetch($query)) {0 _( }$ ~& {6 n7 B$ {' {' [
                $asklist[] = $value;
& I; d8 Y7 Z6 P. U. P        }! h; m/ F, ?( |
}
1 l$ W( o6 p" R0 C4 M7 H1 }$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");
9 ~, A- n% Q" [1 F! t# I7 m4 R# ]& K& Y) U

' R8 n- C- i  @% Z6 d4 O
; X% J7 }7 c8 c- g; T多数据表调用+ h" A. m4 F% }+ F  f: a
$perpage = 40;& X" H  b$ V/ V" ~
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
0 |5 H: K8 }5 S6 a$start = ($curpage-1)*$perpage;7 [4 u/ u% \9 f% y( e
$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 != ''"));5 I6 W7 ?0 }% O$ H% o+ F5 V
//$alist
0 l( S, c9 P0 M2 D8 d$alist = array();
6 r( h9 [  a( x% K5 i! uif ($acount) {1 z  R8 w, e6 C9 v
        $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");
, a0 z3 w9 f0 U        while ($value = DB::fetch($query)) {
. g/ M# n" }* ^5 G. p/ \# ?                $alist[] = $value;* o! E" r: t! N7 |1 `, V) |) B. J9 k
        }, l5 X( K1 |8 {
}
( J, ~$ D# }6 S( V) M0 l8 o$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");5 Y: Y. V0 r+ I( E6 O. z
, {/ F7 k$ l8 I. `# v

7 k2 \; J& t7 {6 G
0 V+ q7 n, c, e3 s% g. J3 p前台数据显示
, ^7 Y  {3 v/ Y& g<!--{loop $alist $key $value}-->
! i+ J% U/ @( }" X<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->
  Q" X! ]- S6 E9 i) [+ _  {4 W+ n<img src="$tupianfm"><br>$value[authorid]
$ w% u  Z: _; n<!--{/loop}-->( D" m  \/ b4 q/ h! H
2 Z  r' ]6 r  ?  D6 p/ @/ _% t. \

# j' F+ ?$ X8 T4 \$ M5 J取数据表中符合条件的第一条数据
5 w! N6 o( R' r; P% G$app=array();# Z8 s7 `: N2 C2 h% M
$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");
* o' p8 i+ D" Q* y% _- E
' F) l0 ^7 a( N8 N( A" Y
7 u: w% D! j- G3 u1 G" e
. h8 t2 L; I( M# d9 L5 b7 \3 w人性化时间戳
4 Y$ K6 a3 ^1 ]$ _$ {2 c1 _<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->
+ T$ ]( d8 `& g  E) z) V, Y<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->7 o; }' A& D- T
( O# y( ?- j1 q4 c+ \3 R$ h+ [, Q/ |
$ t* w$ q* J- q5 ]% H  a7 T
截取字符字数( U3 k- h6 H. H( P% V2 A8 K
<!--{echo cutstr(这里填写参数,40)}-->
4 I. z# v/ i4 H6 Y8 v9 ^
# @+ P% ]* E6 s) b$ h4 R; E3 M( ~- O  U2 R
过滤DISCUZ代码7 O$ i1 N2 e. ?
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
5 e" S9 a  f/ ~) Z  ?" `* R0 `3 G2 [0 x0 u9 f  i
. O& e/ l) {( _8 H& N
写入数据库/ _0 t5 T5 p! Y1 X% h
if(submitcheck('tijiao')) {
+ p! z% k7 Q/ @  c        $setarr = array(# o/ Y3 O+ u2 {' C1 ~9 I& m. \
                'tid' => $_GET['topicid'],
# r, |4 e' K" Y0 ?" Y  `# S! a! q                'name' => $_POST['name'],
; w, s) B3 Q9 P                'position' => $_GET['position'],
' I& a# j' e. y; E8 j                'dateline' => $_G['timestamp'],
8 ~7 j; }7 c0 y5 @8 i        );
) r, n% }+ B4 Z! x8 G( K+ @7 O0 ~        DB::insert('abc', $setarr, 1);: _% g- x% D* d1 I, a$ u! {
        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");. F, J+ L  E+ `( l% R+ |4 _  ^) @' B% H
        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");
" o% G. }6 E6 S8 O        showmessage('成功的提示信息', "跳转地址");
1 u( P) w5 J; E. |6 k1 \}
( B6 i7 E/ k0 n, j. v9 S/ j
6 K* k7 E' r& J* ?- L7 q- ^
- K+ T! E1 L* |
& G+ S) Q( S% s: R表单提交:" ~7 s, ?! j% g% \
<form action="do.php" method="post" autocomplete="off">
% Z. M6 ]9 z9 ^, M' J( H% P        <input type="hidden" value="{FORMHASH}" name="formhash" />7 ^# C6 ^! S2 @0 P) t
        最低奖金:<input name="qi" type="text" value="" /> 
' h4 O! r1 ^8 f, I8 G$ I) M        最高奖金:<input name="end" type="text" value="" />  
1 O" j. w0 F  K# Z$ u4 M& s        <button value="true" name="tijiao" type="submit">提交设置</button>7 j* X4 x. Z8 A- m$ g- E" [
        <input type="hidden" name="tijiao" value="true" />
  ^3 e4 H/ z" T3 ?; j7 i' i</form>* j# U7 a% g9 ?9 ]+ X' m1 i
+ v8 W3 m0 S$ x% t7 ]
. u9 J7 m" n4 _. `2 t" U

6 o+ T4 }$ }/ |以下两个时间格式是对等关系; M$ _, ?/ p& {3 L
date("Ymd",time());  20150212+ u8 k0 {6 C" n( E/ ^
FROM_UNIXTIME(dateline, '%Y%m%d')8 f7 T0 F7 a7 l# L8 y. `* ]( I
0 L4 T1 b/ i, d
前者用于PHP,后者用于数据库调用的字段的格式化
; O7 e- c- ?4 S; W# D6 {( @6 ?: t
# _. A1 i0 J* G4 Z5 D调用图片附件
0 ]* e6 H. [5 d7 l) X, H( a<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->0 B% p8 m, u  e7 u6 ]' i) M
2 X8 s! N8 W  ^6 ?1 h+ r+ x
/ C; A5 v, i7 {, {" e
数据库循环嵌套调用
/ P) t" L  S$ {) y2 g0 S<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->
9 @) K2 \+ g  R# l, c7 b2 N2 I<!--{loop $slides $slide}-->
# n# }9 m( P. d+ ?3 L+ l+ _$slide[name]4 d: g+ a$ e1 U% I& f' C3 Q0 o' n
<!--{/loop}-->2 h9 ]% l+ w# U! I0 ?

  l! t5 @7 N: M) V0 `+ I* d  b4 y7 i1 x" G6 R: `3 h
ucenter无法登录:
; g( e; \8 x( `* \* a打开uc_server/model/admin.php9 Y4 Q  ?' H- ?: q5 n5 |/ A
找到第22行的9 d% ~* I2 t; i
$this->cookie_status = 0;
1 k+ V" S7 i1 L' Q: A/ r6 `! f. @: z1 \

) w, U( v" F& u0 f$ E& G2 f$ d改成
: G5 c, K  ?" H& D4 c6 `. ~/ l$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;
+ H5 f, k: [4 A8 \1 L3 j7 C& j$ x" S

: c# l) q$ i& Q# |: [2 _8 B, t. a! D, {4 c& t; d+ H4 y' z
无刷新切换li标签并且同时加载框架页面:- @& ]; A8 k8 A* H  l+ l
<script type="text/javascript">   N! v% U1 J/ \3 ~' H, Q2 b
var jq = jQuery.noConflict();" A+ z: Y  p# ]
jq(function(){
/ j. j0 S+ }% [jq("#changemenu>li").mouseover(function(){ 6 Z# o7 Z; n- u6 T) M+ D
jq("#changemenu>li").each(function(i){ : S' V7 b# s6 j, ]
jq(this).removeClass("current"); : l: H  }( E, q$ U
});
  [4 E8 T0 h; Q, W# C; Ojq(this).addClass("current");
, N6 Q+ M$ T. h8 V, h2 _document.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';
7 J/ L* y% i( d  _}).mouseout(function(){
( D2 z3 N. h* F, r# n1 H0 }jq(this).addClass("current"); 8 m6 p$ c6 x8 S3 g6 p# ^" f5 K  i
});
' E, E8 o& d, z( P});  T  w" E! x' f: `0 @/ X
</script>' t3 v) \4 H3 l/ a3 |) z
<ul id="changemenu">
6 p- u7 s' q/ j) u/ ]9 l5 Y0 b   <li class="current" dataid="1"></li>" K* ~- y5 i9 c
   <li dataid="2"></li>
; Z5 X' V) i9 d9 O; g: m</ul>- B  J# x- j8 H0 L, u, z6 k; w
<div id="changenr"></div>
0 b# U0 T; x- P7 E' J& _! l' H, T" W
  j* S0 x1 S0 d: T+ m& F, m" J. k2 ^# j# E- @) ]
# g' M6 Q& {1 O2 |- n9 [% c
快速发帖3 {. o  {) j9 D$ s1 w
<a href="forum.php?mod=misc&action=nav">发布新话题</a>) Y$ @! t$ |4 e! j9 j
7 Y: M$ u0 p, R& T* s8 v

- Y$ t9 T) V' D
' [* v0 Z7 }9 g5 _" E4 _! IDISCUZ JSON数据解析获取4 l9 T& }+ l4 R5 ^6 e3 R5 F
$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';
, T% T! k% c. p/ }3 n  a$newstr = str_replace("\","",$str);
4 t- v8 [' P7 ^5 k$data = unserialize($newstr);, S  a& c: `% P0 q- l  p! O
echo $data[sitename];//输出结果为源码哥5 c9 ?; n2 b3 ]8 a; D6 z2 h' ?
: G' n2 N9 f: k( W

* ~! U' ~* i) z, {$ o/ N2 {7 A, @& F! ^( a1 V
DISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:2 m$ |7 M$ K: s+ m5 H$ d! u
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);8 h( h8 c+ h0 h6 Z
# d  W2 U- E- z

, M3 W: m! N/ p& d修改为:& r: c5 ^- ?, H
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);* G% P3 s% A& L1 H& l
* Y2 s6 Y' o6 t! @2 q
( G& L, U9 G! \$ }8 U, H

9 ^) u( ^$ e, M: I; A: T* SLI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):- |8 a0 b$ v+ b/ W
<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>
5 w  P0 ?/ ?+ d; v; S; E! G! x% U& A<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>6 e- R7 {: M' ?  k8 u
<div class="list">
& z$ N, b/ v/ f9 Q        <ul>; q$ Y! L" T: K3 g. S5 \5 S
        <li>源码哥</li>
% D+ H2 U0 G" E0 Y        <li>源码哥</li>
& J* ~9 ]4 E% q: U1 Q6 d$ y        <li>源码哥</li>
/ f' B$ F- h0 K8 r0 ?. C+ c        <li>源码哥</li>; e7 n% P7 x/ {4 m; q
        <li>源码哥</li>, K' a" b4 k4 e) s
        <li>源码哥</li>
" `- U5 N* K. w' R* W0 w( p9 b2 E    </ul>, O# w, r' V7 f" R( c" q- O
</div>! }' N6 \1 W! s* h
<script type="text/javascript">
; u' J/ ^0 t1 O) g, u    $('.list li:nth-child(3n)').css('marginRight', '0');& V* [( l! e$ m, C
</script>
) N: M# Z, z5 e" b1 F3 _* X& z: a( S% u1 w: K+ F* e* R( k: w/ @

: U% R$ G% M: G# B
' E9 }" I- e+ W常用词汇& w4 \5 x% x7 W) p3 a! c  z! S
select 选择% R! d2 O2 J$ h  m$ l1 h
count 总数
1 }# l8 @8 f& m5 ftable 表. {, v4 n5 q3 y" p
where 条件
. V8 Y; o$ J+ m8 \% x& ^9 `! \9 @: Gresult 结果
' ]+ F; d/ }7 G1 c( E: ~  I& Xperpage 每页
& K! p: L8 V2 v, l7 U. xcurpage 当前页
4 ?2 m9 _# ?- y0 t  |- Mupdate 更新
9 V+ C0 ?+ N3 n. B" Y2 cdelete 删除
/ s  p6 H. W. u" K( z, M. z6 s% N# \) q9 jinsert 写入
2 {+ A. Q+ x$ w. _dateline 日期
: I, U  `# o8 G5 e; Gtime 时间: g. f  F# m" k
echo 输出   <?php   echo '123';   ?>* v$ a( J( v* F1 W! w( R
multi 分页函数0 U3 {# g0 }# D" Y! c. Y& Y
if 如果
  x* S" r1 U/ O1 v/ P: M9 U( helse 否则1 p% V) @4 T% \
elseif
; J& j2 ^  O( M0 z; Q% c5 s/ vstart 起始3 [3 _  G1 B4 ]9 {1 K- S* b0 Z
limit 限制  limit 109 B3 t. s6 Y5 F- a: M: E
DESC 倒序; J; |! [: c- a& V* z, |1 C7 v% e
ASC 正序
+ O4 ~( W+ c* ?5 y& p
- U5 B, E. S  F' I2 D1 n
, z  c  k8 }  N' P- u6 d1 u2 y1 {
7 H) U% m2 }, c8 _) U活动帖发布页面核心处理文件:
" I: Z+ N, g- n: U$ P6 l4 Lsource\class\extend\extend_thread_activity.php
$ D, ]  v* c% Q5 @
+ ^2 u0 `" |+ K' _. q$ Z$ c  y分类信息解析文件
5 j% R2 O* b0 M& tsource\function\function_threadsort.php) t% v4 C' \6 [. m$ C8 |  t& z
Discuz模版运行php代码
8 A2 G% M( y- E<!--{eval echo'源码哥';}-->
6 N: T2 l% \5 F2 E
+ t+ |1 U8 ]8 e" W$ c<!--{eval}-->
$ o& {4 A9 c9 K. U4 n4 pecho'源码哥';5 I: q( {: O9 N% t% b
<!--{/eval}-->6 Y5 u1 O, W' D8 o9 e9 W. m* q
标签获得焦点后触发js 2 \+ n4 l: x$ k) \- Y' D# z
onfocus="ymgcom()"
; Y1 i4 v+ i7 y; X3 N# X3 c! B- d# M7 p; `; }

2 n$ ~6 T2 P, p, S  {3 k! d标签失去焦点后触发js / V' c& n/ n- H( \9 E1 g

$ X3 O7 o; f4 n/ b, F( Honblur="ymgcom();"0 k  u* S- S2 i" z

) g: G, Z8 u' M6 P4 K
; P5 o  @3 N: d8 [密码输出1*****66 w9 f0 X: ], q0 v& J. }* m4 x
//原密码为$_GET['password']
4 e5 s0 m1 [) l. N" Q8 `8 A8 W$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);
; x; K' U! Y$ N* ^1 d3 V; y8 D  Vecho $password;
" s" ~. S' E9 C9 ]6 y 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-8-25 21:28 , Processed in 0.172067 second(s), 62 queries .

Powered by 罗码网络! X3.4

© 2001-2017

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