坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

[复制链接]
坏蛋网络官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录5 i8 `* d: \2 w2 |8 j
<a href="member.php?mod=logging&action=login" title="登录">登录</a>3 q9 A, G6 z/ i9 p7 P6 h

% P# B- i# \3 u6 K$ g' A9 ]0 B注册; N# x2 o) A5 N' N% }) ~
<a href="member.php?mod=register" title="立即注册">立即注册</a>9 H& F& C. q) [4 @  j/ g% O4 d% |1 \

: @- `9 N3 M0 e忘记密码1 N: j0 a% d' h4 v9 k/ K
<a href="javascript:;" title="找回密码">找回密码</a>
5 V0 K3 \/ p: V. P/ [; {9 N$ [
) c, N! f; ^& @5 _购买邀请码 ; J5 ]6 o  ^- C1 }" d8 q2 E' k4 P
misc.php?mod=buyinvitecode& o7 n7 q/ d7 P/ A: I6 y) W
0 p. j. R' Z) Y  m3 f3 R
JS跳转
* ]. `+ m$ t% E& m  ionclick="window.location.href='home.php?mod=mobile&do=friend';"
' q0 k) m" P+ k  }
# i, @3 |& K1 h% E. X1 sJS更换class的名称! Q3 f  Y% v, S  i1 x& R) w
document.getElementById('idname').className='a';
* G! Q6 B. J& J; u0 adocument.getElementById('idname').style.display='block';1 l# O) L+ a9 y' a/ Q
document.getElementById("idname").style.marginTop="30px";
2 M7 s$ E  M) t; P  o: t7 X, n+ v( \7 t/ l; W
批量替换超链接:
8 d0 {! y: G1 t) m4 @. N" ehref="[^"]*"
: e) A8 ~! m  y1 M- ]' O- `
: H: ^: K6 [. S2 k) D9 p过滤DZ代码:0 z3 I" b# G* ?+ e$ `7 v
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
! a" o9 U* D6 L5 U- d4 w
+ r& T# W: G  t, Q调用单个数据5 n1 g+ f( p2 i; w6 F9 v3 u4 M
$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));* W+ a3 G3 j+ O% ~

& I1 o2 _" d1 x; V$ B+ l调用统计数据" W+ Y5 z# F" J0 G% a
$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));5 [4 H4 L" G4 b% J1 h! ]# B  _
  [4 ~, l0 @1 }/ q) `4 o
单数据表调用6 R  \5 _* d( h- b7 e! B$ Z! p* s
$perpage = 20;. m1 l. K9 \% `
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );- }9 I+ Y7 L; ]' E
$start = ($curpage-1)*$perpage;
, d( b+ L* a: A8 P5 s$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));9 F$ g- h! K. b/ ~* i
//$asklist
/ r: \9 h$ }9 E1 }# r$asklist = array();$ D2 }. b% p# [) `- J$ y% T
if ($askcount) {
1 S- C! l( I+ J8 [        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");
# K+ ]" z" n4 G6 [7 V        while ($value = DB::fetch($query)) {$ ~/ \9 f) J0 W9 u
                $asklist[] = $value;( G: m9 }) o% m/ r# J$ D
        }
  d6 Q3 g. r( Z2 r: Y% _8 }& N: s& R}
! r2 \; i8 V- w4 ^6 G) j! J- C$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");  s6 I8 U# n" p- |% R5 c
& U7 U2 g6 X! e) ~+ U4 b
  s7 d% t; f* \8 a
) J0 \& B/ b- f# C
多数据表调用
& h% R  c9 T9 Z$perpage = 40;
: H+ z  J% I' \6 }1 C* p# i$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );; P/ |5 A: `# u! R( ~
$start = ($curpage-1)*$perpage;+ ~) ?% X9 M6 }/ y; l. F8 c; `* ^7 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 != ''"));' C# D; ^7 L3 v* N3 i% f
//$alist7 [; ], D* `1 c- c; R
$alist = array();
; J0 ]- ~6 ~: y! C! i# fif ($acount) {
2 x/ V0 F2 b. Y# t/ \& D4 ~1 [        $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");+ U2 L9 x; X* L+ v: }- F
        while ($value = DB::fetch($query)) {
% V+ Y$ ?8 e' {) \                $alist[] = $value;; i4 X2 t1 F# w- q; L2 |5 v
        }
- K* i9 Z; y/ [3 @+ z1 c}
+ K% v6 M/ t: e2 E3 z$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");$ ^. s3 E% c! x+ i) U- [
' d& l1 [' `& Y
, P/ A1 b6 P/ v
) a/ C: X+ w: ]: c; k" |
前台数据显示
+ P6 u+ J4 ~% i' ^" W: W& F<!--{loop $alist $key $value}-->
' _9 ?' G; t) u0 ^/ e3 S<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->
& h1 y' N1 c/ a5 g2 v7 v! y<img src="$tupianfm"><br>$value[authorid]5 w0 t6 Y# T0 \' s
<!--{/loop}-->9 f% ]; f' _$ |1 t7 N( J' p

4 U0 \( Q4 {: P0 K; c# Q
8 G4 \' m% A! _5 K+ Y4 J/ B; A取数据表中符合条件的第一条数据
8 B5 Y6 S+ e  \* s$app=array();
. S3 K* F- a# y0 I6 X4 S( ?$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");; u/ h, d6 p6 }5 g, l

* c/ b  Z4 O2 [9 v4 E0 `! e; Z# r2 N2 \4 q! k. m

% O4 P5 h. v$ V, `人性化时间戳
7 y, J1 F- t8 F4 t<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->3 R& x4 K8 N- l( U  z! s
<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->
9 O' ^9 \/ S9 L  n
* J9 Y+ D2 q; ^: B7 t) v. o$ x8 N4 S: [, M5 X% [
截取字符字数, U( O  i* M# j
<!--{echo cutstr(这里填写参数,40)}--># m( L9 Q5 ^2 p. X- x9 M

/ j& I  K$ A2 s% _3 {% p  H
1 ~* a' F' Y6 p( w/ `" y过滤DISCUZ代码" z" W. E/ @6 @* Q
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
, p, v% _( V$ D5 l
+ t7 h: C! H$ M) u2 a" {5 |+ U
( j+ @, N  n2 v1 K写入数据库9 y0 i" p' V. w6 Q( n& Y0 F  o% w
if(submitcheck('tijiao')) {
' s9 g& R! _4 ]1 E" G  b& m& Q        $setarr = array(4 R( B. C* K- b
                'tid' => $_GET['topicid'],, c2 Q! \% l3 R3 T( |, L( I
                'name' => $_POST['name'],
: q5 f" O: d  S* |; u2 m& d                'position' => $_GET['position'],
  J% H+ W4 X5 @" i6 u( `  m                'dateline' => $_G['timestamp'],
2 ]% Y( B; T: L# I% B- N        );
2 ~2 R) u; X9 w- U        DB::insert('abc', $setarr, 1);
' i/ t' {1 y1 |8 D: k7 E        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");9 V$ u; a: c* P# K3 @$ t+ ~
        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");/ o0 W! H* D" u9 _1 p% z
        showmessage('成功的提示信息', "跳转地址");
/ s1 N  S: F0 N% j$ F}' l; ~& `. M1 }" F+ }" k; y
$ `$ V1 M0 @+ D; j. _% m+ ?

& [. [  o/ o$ R: D- m# `& r8 G
9 o8 n" `$ f" [% M* n  W7 q( H5 X. F表单提交:' ?3 N' u/ z0 V3 f; r4 J+ j
<form action="do.php" method="post" autocomplete="off">& l3 K; M3 p3 y3 \9 |+ Q' q- r- R# s
        <input type="hidden" value="{FORMHASH}" name="formhash" />
( U; q5 J( `9 x& [+ j  x3 c- `& @4 _        最低奖金:<input name="qi" type="text" value="" /> , m' r- X* ?" N' P
        最高奖金:<input name="end" type="text" value="" />  0 u0 z8 n3 s1 {/ |; @- U) n
        <button value="true" name="tijiao" type="submit">提交设置</button>
5 L4 I: a  }3 T$ A$ ?        <input type="hidden" name="tijiao" value="true" />% O; f4 s9 f; R! d! v
</form>
- p3 ?5 k" C4 G! m4 p
( N7 P  J+ F7 l. |% z) _7 G8 ^+ f  K- v4 i# D

; S: q: R/ L( b7 m以下两个时间格式是对等关系
4 O3 K& o0 K8 \; U+ T3 u. a5 B8 C# adate("Ymd",time());  20150212- W3 L4 s6 W9 Q( B
FROM_UNIXTIME(dateline, '%Y%m%d')
; b7 M7 H# u3 Q0 N9 s( j& ^% Q4 \% m0 K
前者用于PHP,后者用于数据库调用的字段的格式化2 F( O% E. _% K, M2 ?
) S  w$ `! T: V6 W& Q8 u
调用图片附件
1 w$ G! D3 L: A. k+ T5 L7 b! H<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}--># c& S9 A( |! g& l

3 O: ^1 h8 ?+ g
' o$ |. V! z! c! g数据库循环嵌套调用
' Q3 R% D. N$ k6 y5 m* _<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}--># B# ?7 r9 K) B; Y- a
<!--{loop $slides $slide}-->
% f4 T  e6 D* u# ?! ^$slide[name]) m. B- h' W& {5 P9 a
<!--{/loop}-->/ g6 x: e: J' }9 \, k3 {8 Y) E" U

' B  ^' l$ I) y/ W3 m. d. X! k% b$ V5 G9 M; }8 b
ucenter无法登录:  \% o. M/ x9 U$ W$ Y& h
打开uc_server/model/admin.php+ S" n( v' s) ^) x0 k
找到第22行的8 F7 c- v- o* a, a! N2 q3 y4 \
$this->cookie_status = 0;  C3 T, ?  ~$ v  ?( N) z( y& t, d$ Q
7 n6 `# `) \0 a2 M$ M

$ l; n( U2 V% v改成8 W* c3 c1 P8 R8 v: @- r* }6 S" e
$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;, l8 o: a. P& h2 u7 t, S6 w$ {
3 a' u5 Q8 M4 H$ W4 h  i
6 P0 f; O( n! _/ F

. Y: ]' o! H- ]无刷新切换li标签并且同时加载框架页面:& `; t  P' a8 T$ m" d- c# U
<script type="text/javascript">
& `7 I" S# B  y3 ?  T$ Zvar jq = jQuery.noConflict();4 J2 Q3 ?: W' n4 k  R( v6 m
jq(function(){ / |$ v/ M& D2 T6 [" Z
jq("#changemenu>li").mouseover(function(){
) S/ S* l( S' Njq("#changemenu>li").each(function(i){
& d8 N8 a/ F3 {7 s8 T% mjq(this).removeClass("current"); - {1 `2 g# t" I. d" ~
});
% Z; @6 o1 q, C1 E" Cjq(this).addClass("current");
0 u! v# e! a: t9 V- f. ~5 Q+ Ddocument.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';1 m- \0 J6 H- ~  ]; u/ U0 p0 G0 t
}).mouseout(function(){ + H9 d, f* h" o! v
jq(this).addClass("current");
) I- n4 Y9 L# H}); 6 i, h, N0 Q% f. }, L. |
});5 R4 g$ P$ C; G+ N
</script>( v) n1 [9 N$ Q1 Z: b
<ul id="changemenu">
6 x- Z" T) C) w5 p# k' S4 @4 K3 |   <li class="current" dataid="1"></li>5 O+ [' I8 w) u6 Q* {* E: b$ n% [4 ]
   <li dataid="2"></li>
$ }6 }2 s# C; n" s: V</ul>" {/ c5 N. {$ N# a0 ]
<div id="changenr"></div>
, X% G( D% U; C5 N2 O& @0 ^4 a& F) ~- x/ i! s6 _; n6 a" ^8 B

. ]) }8 U9 A3 A. K+ V9 s5 f5 ^( ], |' \$ W& P2 X5 S
快速发帖
; U6 }; N% R0 I; a<a href="forum.php?mod=misc&action=nav">发布新话题</a>
' ?5 c! T8 V, |5 e7 s* B1 v" [3 K9 V

% I( r" H) G+ Z4 b
0 w! n3 X2 h, a) F: F1 Q% MDISCUZ JSON数据解析获取! M5 l: y8 f3 f  p8 _9 C
$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';
% |1 b+ H% `0 q9 j/ E* {( u+ P3 @$newstr = str_replace("\","",$str);
' b; ~0 K# c( m. e4 A% z9 }$data = unserialize($newstr);
- M0 K4 D& d8 \  l" i( Z" A! fecho $data[sitename];//输出结果为源码哥
0 v5 X: C: v! p6 |" C* j0 f' x
& K! c+ E, N5 j" l8 R% {& A+ p: x, O% E

9 d' f0 }' ]3 L! dDISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:/ x# ]0 ?. x* u$ l$ Q$ p$ A: X  `) ]
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);4 |8 t8 o5 _, Q7 a& ^* L
  h( V3 F9 n! w/ Z' U. G

! P( Q8 f7 p. j4 @9 _& d4 h: X修改为:
( {- s. Q3 w* l# l$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);
) `" w: v  g, J' e) `1 |3 {
# C( ]4 i( x5 x6 E) H; Q
0 m7 ~# j2 R: p( ?; p# a/ f. m
. E6 Z9 A0 ^' i7 H7 r! OLI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):5 V- b8 A" \! m' o
<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>6 h+ K2 [5 J+ a* k. f! R# |: Y
<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>) D. J9 a& A+ m. |& i3 s
<div class="list">
' i6 [: ^# e6 J0 P) u; S        <ul>
$ W8 ^$ q" ?5 p7 S        <li>源码哥</li>; ~4 g- G4 t8 @9 o. a+ b
        <li>源码哥</li>
/ _) d5 U; h( {1 @- q5 h        <li>源码哥</li>" S) Y, I" }) \# f( y$ B' O
        <li>源码哥</li>6 e/ w, [( f- A6 T
        <li>源码哥</li># n6 q) M5 Z: r" ~; x
        <li>源码哥</li>
  q, k& R% g3 D# p    </ul>
8 e2 o4 J7 ^/ T# M6 [7 z</div>, B) O0 Y! C$ q6 f; s: Q) T2 G7 N8 Y3 f
<script type="text/javascript">
6 [0 S8 C' s% C    $('.list li:nth-child(3n)').css('marginRight', '0');
! u/ g. H- c4 X</script>
9 O* q# q: L6 I. I, U( {
1 q* S. k, X6 @- s- n% Q& ]3 E; i& D" N6 P

: m$ E; m0 u6 b$ |1 Q5 X常用词汇& \/ {5 f! l& v) ~- _' V
select 选择
+ U8 C. W& M: z( n6 [count 总数# g& q# N) U0 m# v
table 表
# T: B  x( s! E1 awhere 条件
4 e3 p+ p" O$ H' V+ P) {/ Gresult 结果
, S7 r! `: T/ X5 o( R7 W5 g! N, Sperpage 每页6 @4 B; M4 N/ }! W* R4 z* |2 W
curpage 当前页
5 x6 w. y4 `/ b# u; s( ^! d8 R9 Cupdate 更新6 k7 L! ]' N, F* D4 T
delete 删除
, l; A( {$ C* k" J4 ^/ z1 linsert 写入! W0 t! T1 w/ F4 r9 ], U
dateline 日期
! u2 H% U4 h/ E- t# rtime 时间$ ?6 v3 K/ A  V1 r6 I! F9 B
echo 输出   <?php   echo '123';   ?>$ U8 W0 g1 L7 h2 M5 l
multi 分页函数
$ }. b+ a6 c) [3 U8 Kif 如果
7 S; [( r0 ~; xelse 否则
9 @) Z) ^6 Y, E. b/ welseif
7 _( j' ]5 n: \0 {, Vstart 起始
, b) }6 d+ ?- [$ J+ p# blimit 限制  limit 10* [0 {7 p$ c6 x7 \' f* w- T) ]4 j
DESC 倒序: b" `8 C) j3 k7 [
ASC 正序  v) R0 s2 c% h

) [" K4 F, m* R9 r6 W3 n% B% I/ |7 g0 A. v4 I9 M" w9 ]* s1 w, z/ C
. K3 f0 J' J5 a5 S" Y- V
活动帖发布页面核心处理文件:
! N( _4 b* E% ^  q& x6 X' |# F0 m' Qsource\class\extend\extend_thread_activity.php
( F3 T6 W* C* }" p0 e$ ?
6 S: F6 }# Z  Z( t' ^, V6 }/ G. h分类信息解析文件1 E; j; d1 }8 S: q  g
source\function\function_threadsort.php
& Q! }4 `  M- a) |, z- CDiscuz模版运行php代码
* w( k- j* `" N* X3 ]& p$ f4 U<!--{eval echo'源码哥';}-->- I+ \  h2 C" m; E0 {3 s$ {

1 ?) Z* q9 Q) s8 _0 A% W<!--{eval}-->
& S3 ~+ I  h! ~! Cecho'源码哥';& J3 g3 A/ C; k+ @
<!--{/eval}-->: F' j9 C, U+ ]1 Y" }( \
标签获得焦点后触发js
+ W. m. n. ~5 U3 W% `6 U! tonfocus="ymgcom()"9 X! N; d) J5 e8 _  q' N+ b: P6 G

2 B) ?7 f, T; [" [& Z
1 v9 f2 c9 _/ \, }标签失去焦点后触发js
& I; a  G, h' T* e6 B% J5 u" k$ h7 L9 r3 a  }4 z8 n
onblur="ymgcom();"
, m' l8 f; U3 ^
: W# t" U, V3 x0 d( z9 L
" x! \' o$ V& r. e% r+ N! f密码输出1*****6) A" O% `6 s+ A0 K4 R: c8 v
//原密码为$_GET['password']( V# f/ i" K: \
$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);
8 ^" o  v% {: C! y4 a4 r3 T: M0 `" ?0 ^echo $password;
: l  l0 Z( J& D: i 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 | 显示全部楼层
不错 支持下
回复

使用道具 举报

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