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

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

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

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录& C1 `; p& f. m/ O# F# ~' F
<a href="member.php?mod=logging&action=login" title="登录">登录</a>
: e' ^4 x5 O4 X# Z; [1 u+ Y3 H2 a; ?
注册" Y3 Z! R9 K  H+ d
<a href="member.php?mod=register" title="立即注册">立即注册</a>) s, [" N* f! F0 b/ V3 J
: D  P1 V. L! W& _) a  [* r
忘记密码
, Z# N0 l- g. Y5 ?0 F% {9 s# I8 @<a href="javascript:;" title="找回密码">找回密码</a>- ^- d+ I& N& h8 N& Z
! m! D0 c; k+ S6 d
购买邀请码
  j9 u. y5 F% I; Y7 H1 xmisc.php?mod=buyinvitecode
& _2 k$ h  ~: k5 P, S1 C" o/ ~; t1 A0 R/ R7 E! M* G
JS跳转/ M. p0 G6 K+ t4 v. ~3 P4 [! z
onclick="window.location.href='home.php?mod=mobile&do=friend';"
) S5 f: n- D, s2 H" h6 c4 J5 B: G: i0 k9 z, k/ n1 w/ o
JS更换class的名称
+ F+ W8 ^7 M; V- a. Pdocument.getElementById('idname').className='a';
: H7 @) i4 _% D1 c0 j+ r. M2 p6 idocument.getElementById('idname').style.display='block';5 L, b4 {0 r2 Q' }* [9 x( r
document.getElementById("idname").style.marginTop="30px";
# [; n0 ~) u; C
! d% C2 B! d' u/ L7 C1 [批量替换超链接:
- w4 X3 i) B, |( _7 G+ u. b8 [1 nhref="[^"]*"" d7 A; }# ]- P# l
5 g! w) {% X% j$ L) i0 r
过滤DZ代码:
) O2 {. N# j' c) f6 C- Ipreg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
3 ?1 j( @% [3 U8 _* J" V& y/ o0 Q( r- C& j0 }
调用单个数据
  R/ c' u5 @9 f* @1 k$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));5 v- {4 T+ N  j7 A

. O3 \; R) v. Q7 r; z' k调用统计数据5 ~( _. m) P1 R% b+ U4 K+ L
$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));5 I0 L( K2 }  t' }6 g+ O) N: k8 g

& L0 {4 C* j' B9 y' ?3 O单数据表调用
6 O( {9 b" v- D/ n( B$perpage = 20;( A4 `! @) S2 b4 ], e, d
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );$ b7 j3 A' ]: E. l
$start = ($curpage-1)*$perpage;
" q( Z* F; H+ o/ P" E: K) A4 G$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));& t6 b4 y+ `! l
//$asklist
' Q) T: u$ j( C$asklist = array();3 g  c, P5 h( f+ A- {, n8 w$ ~( a
if ($askcount) {
% _* u, t) N& A2 U        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");' z8 s4 l; x" |  r3 D
        while ($value = DB::fetch($query)) {
# Y0 P4 r0 s/ c" E. V4 D                $asklist[] = $value;$ g. X: m* a9 q+ }* U% r4 G
        }$ U5 t, U: X1 o- B) B6 b/ Z3 `
}
4 k* I# X2 q, i6 c8 {4 C5 q7 ?$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");
& a! b1 ]& {% \0 Z* X5 j8 E" v8 h0 }( i5 t8 I8 J+ ]2 ^- F- s

( [1 Q1 P5 t- u# n! E0 F
  D# }/ S: w( ]& P多数据表调用% ~: z5 Y( N( W
$perpage = 40;
. w8 Z! \/ d: t" o5 Z* n' u$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
: |! h6 o0 ]7 Z/ A, z* B) |$start = ($curpage-1)*$perpage;7 b' Y: ?* f$ y9 h- m% z' J
$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 != ''"));
, c9 ^4 d1 X. l3 Y* o1 A//$alist
' V8 q; |, C$ g5 e! V$alist = array();$ {9 o5 g5 c7 _+ z( ~
if ($acount) {. e9 q' M; p9 ]# x
        $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");
2 ?' a4 K5 X0 v0 V: g) T        while ($value = DB::fetch($query)) {% j; r7 H: T6 r5 [
                $alist[] = $value;3 S6 l$ u4 q3 ~  c; d
        }( H9 g  ~. Q. A2 I7 Y# {) ?4 u& ^
}" G3 s9 P3 v! P! [
$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");' V4 d, f/ T1 v5 Z
6 Q# B# ^  b  t2 `$ m
! L% T: r" V; _& K
$ d0 W. N- P- {
前台数据显示
7 k7 e7 P# E9 ?) @5 D( e<!--{loop $alist $key $value}-->& M; n/ r6 F# g
<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->
) ?' n5 y; X0 ?) m9 ]<img src="$tupianfm"><br>$value[authorid]5 X: e' H) T" B9 R7 c/ b1 O
<!--{/loop}-->
' R& s# \. Y$ k; O* t' y" F; \" B& ?9 W  [! ?4 T* |8 d3 I
6 l0 K+ I# J1 P: ~$ D3 I- f1 F
取数据表中符合条件的第一条数据( @1 c- x6 h/ A0 L% }
$app=array();6 F3 Z: w7 G2 T- k: r: k
$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");
1 \& q$ O- i. j: j. v; |* `  Q& D1 A- q
- G3 y& \# `3 y
: r3 Y7 K# G. ]
人性化时间戳
- u  o1 e9 F; v3 E" P/ T7 d<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->8 ?0 T' D1 l8 ?( L% m
<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->
+ r, K4 L' P' O# d& T: `7 I$ o4 U9 _
& U" |+ n* g, ?9 U1 @- S
截取字符字数
8 @  p; H; q' g! V( s: I' I<!--{echo cutstr(这里填写参数,40)}-->0 E: G/ f, u  A9 |" {
& s  m$ v) L  ?5 Q7 U' w+ ?
5 u+ K7 }& a: c; W
过滤DISCUZ代码/ c( @! _. Y% o! ]- z; z$ s
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));* H5 ^! j& B* N7 q

% B) w0 z* Y" O7 P$ u: z( P* g. m9 H+ M8 k( C1 q: ]% y
写入数据库& m1 j, ^5 z2 l4 [4 R% R8 }
if(submitcheck('tijiao')) {
: c1 E& d6 s! i+ L7 t        $setarr = array(
% K, j4 t! d2 y; ]                'tid' => $_GET['topicid'],
+ B5 T9 W2 |" e7 j" T! T                'name' => $_POST['name'],
" ]/ T8 G% k8 m' Z/ C                'position' => $_GET['position'],
: [$ c* [$ U( F3 ?  Z, z8 _9 r; k                'dateline' => $_G['timestamp'],
. b: E% q; d& {3 N" S! Z5 m        );
  y: Z' B% b2 c9 S" U4 `* [        DB::insert('abc', $setarr, 1);
5 T! j1 W; `% h' w" A        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");
5 C! j+ f1 j, y5 u        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");
4 n3 ^: J7 n  y' L0 |; T- a        showmessage('成功的提示信息', "跳转地址");
$ c7 q) w  D% ?  {, z) Y; M}5 d  M. b( o9 u- ]' d7 z" V
0 Q8 ~" a, f. l
. g, W2 Y) I1 i) Q

+ w; L% o# d2 s/ W3 V  }) A1 k表单提交:% ?2 T6 |: D! U
<form action="do.php" method="post" autocomplete="off">
, |" q! F" D. a: L. Z5 H        <input type="hidden" value="{FORMHASH}" name="formhash" />  O/ B1 D) D  H( ^
        最低奖金:<input name="qi" type="text" value="" /> ' R& G+ T, k$ S6 {
        最高奖金:<input name="end" type="text" value="" />  
+ i) |4 r3 A0 V4 k) _2 j& l9 X$ x        <button value="true" name="tijiao" type="submit">提交设置</button>
9 p+ ?1 Q5 L& U; n/ W! }/ w& l        <input type="hidden" name="tijiao" value="true" />) E+ q4 r0 O8 @- A1 g/ ^! Z
</form>7 {* H% t! }9 K7 l8 \

# s; I) T( @1 u# n- C! J( O% w
' A+ G, s& T' x4 L
1 k4 \0 p5 l) U# \, p  p以下两个时间格式是对等关系
+ [% {8 l, e, R. B& ?date("Ymd",time());  201502128 d# r' Y. [8 f6 m* e7 Q8 e
FROM_UNIXTIME(dateline, '%Y%m%d')
' d! m/ B$ [0 _5 T$ d4 R1 _% r% m/ o0 A) Z7 \8 e1 F3 G
前者用于PHP,后者用于数据库调用的字段的格式化
7 @8 k. K- ?- ], ]2 l4 T1 I; g) d3 }2 R9 x1 a3 Y# M- R5 c
调用图片附件
4 j8 E& p; Q- V2 d; u3 A<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->1 A$ f9 ^+ ]. O" ?

& a* {0 u7 D; I6 v% D# E5 s8 f0 P' v6 A: u" ~. B) P
数据库循环嵌套调用7 U. ~/ K3 x  m& u8 w6 `
<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->
& j3 S$ T0 ]/ B  B<!--{loop $slides $slide}-->
/ _9 e: ]% |* z- }; a: U$slide[name]) ]. ^+ \, N; q0 }8 W1 C
<!--{/loop}-->0 D7 U( r, S# h* V3 E9 r& k$ l3 S
+ ^& |7 G, b% k5 q6 `. ^

7 v2 P7 {, V" ~5 A2 H6 T4 C( qucenter无法登录:" {3 e: ?6 _/ e' l3 o# U
打开uc_server/model/admin.php2 L3 T% H) \0 C9 ]) b$ v: Y& X
找到第22行的
4 ?2 _* O$ W! d  g3 x8 g% E$this->cookie_status = 0;. q+ H& T& @; F- ]4 ^7 |: ^  i

! x* x7 q, i2 {$ T* H0 P  V- Y2 ]* I, G
改成
; h" ^6 `1 a& V% J% T$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;
+ I! B, i# o6 M! E* \! v
* \# `+ q7 c4 w1 c* M" {/ Q. P$ \) f6 ^/ M1 M! g8 c+ q7 D1 t# Y
2 o  P- e5 g3 ^- B5 {8 G
无刷新切换li标签并且同时加载框架页面:/ u" w  D+ i( x& ~6 c
<script type="text/javascript"> ! }* @7 f  p% O0 a
var jq = jQuery.noConflict();
/ \  j* f! s4 N! ^jq(function(){ 5 ?0 c& \7 D0 m
jq("#changemenu>li").mouseover(function(){
, t. P6 ]; p) }! {) Ljq("#changemenu>li").each(function(i){ : F5 p% y8 t; f
jq(this).removeClass("current");
3 w3 j: W: M1 h- t) G9 _});
+ N; x$ r% G8 ^4 ^$ _8 }0 n4 K& I( ~' gjq(this).addClass("current"); . W7 e/ x' @- T$ U2 i' s0 P
document.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';; |- H. }% }8 P* R9 l0 l; t) _
}).mouseout(function(){ 3 {. }; \7 g$ N. K8 I( O& K
jq(this).addClass("current");
% J5 Y7 F% }+ h% O});
4 n2 v3 m/ n! N/ x0 K" A});
3 G9 |5 G" W: Z: s9 b# A" J. Z2 f</script>! l' m. h! h  u
<ul id="changemenu">/ V" f1 P3 ~+ O. T1 f
   <li class="current" dataid="1"></li>5 {- X8 q2 Z: ]  j" H) j5 b
   <li dataid="2"></li>( ?9 K, ^9 @* I
</ul>  y  ?  o; Z. N( H$ F
<div id="changenr"></div>7 J: x! z2 k+ a
" U; o0 w) @" T2 M) L
8 h+ H# {$ j0 S5 @

1 y8 k6 Q- m, I快速发帖
; m# M! L# [9 N9 d9 }% }<a href="forum.php?mod=misc&action=nav">发布新话题</a>
* @- R8 F. F2 _) `5 k; G% a$ W+ F7 \: n
7 C( {+ B. N3 O6 J2 l

; v1 ]* s9 u- r( {5 `1 SDISCUZ JSON数据解析获取
* c+ _) ~) Q/ H% p$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';* h5 h" \1 w* R
$newstr = str_replace("\","",$str);1 q5 M* Y: j6 _. H* @# N1 l
$data = unserialize($newstr);
! n$ w; [  ^' v5 @. R/ Aecho $data[sitename];//输出结果为源码哥
3 p% n3 E/ N- X3 `% \% B% d' M: U+ d: T! l

' W1 h3 P6 x' N$ [* E2 {! r
) f, g; N5 x; F/ [/ w& t8 cDISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:6 |2 N- D& v$ I% |3 x3 O. j) @" k( Q
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);
6 _' J5 E( X/ c  O3 l
4 t" K* g" B) J! p/ k5 J4 s$ {4 U
4 m" S1 p% Y1 ^: P/ y5 |修改为:8 w. H/ B) }& x
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);
8 G( {; _/ z3 m4 X4 j# n  X- s0 q# {  Q2 G

+ |  `1 l. o1 g& F4 a. |
) U8 V7 I% q/ J7 U- n6 ^! tLI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):
  i, a5 n; q6 r* D% D<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script># k+ \, z) T. y- ^3 Y+ N2 U2 ]
<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>
& Z, v% X2 R9 r, |<div class="list">  ^1 `0 Q7 k; N7 ~( b. \4 D: a' Q
        <ul>
, t. e2 H4 D- ?' {        <li>源码哥</li>
/ `% G( W5 L. B7 x- X5 ~+ R        <li>源码哥</li>
: G$ D, X+ B9 ~  Z# B9 y        <li>源码哥</li>; w: w. u7 `# x$ t* T: J5 g
        <li>源码哥</li>
6 d" z7 |: X% `$ D" \        <li>源码哥</li>+ \6 l& `- R& g1 c1 Y$ e9 {
        <li>源码哥</li>4 R3 p4 |" ]8 S; g
    </ul>
# h/ D& p& p5 O/ B. `0 d</div>9 U' L. s. P7 R' |: f& q, e
<script type="text/javascript">5 A; {. @! j2 K; D
    $('.list li:nth-child(3n)').css('marginRight', '0');, H% S# c7 ?- s1 u! D  O% Y
</script>3 z' V1 ]8 j3 [; S% g1 E7 \
$ l" B* X$ e4 w7 G; U* ~

7 y" A! L" U' a' u5 l" `9 D
0 B; _$ B9 c1 n2 H$ T常用词汇
( k6 A8 J2 C. o- Q9 ~. hselect 选择% m$ \8 q5 d& P# s( |, O
count 总数
1 X7 X) b1 g+ H7 Y! btable 表3 m& F# U% P: r  [
where 条件% f2 ?0 I( d! Q0 ^
result 结果
( \4 k6 e6 o7 K+ yperpage 每页( S6 \& H1 M0 @; E, ~* K4 j
curpage 当前页
8 l7 {3 X$ i) t* t( U3 supdate 更新
  F1 ]0 z, v# t: edelete 删除
% t6 K3 s( E$ t& T2 `# Dinsert 写入8 {$ z+ j4 q* ?1 |; d$ R
dateline 日期& f/ t. e" l+ M  K
time 时间  e- L; @# L2 K5 L* n- b, S
echo 输出   <?php   echo '123';   ?>
! z$ {$ N' a/ Nmulti 分页函数" q" L, _. x8 m) b) y
if 如果# l) D. s; S" T8 ~
else 否则
, E* g( H7 V: E. z" Y+ [elseif & A2 E& b8 f# G" C/ i+ e& B) i
start 起始
5 l/ ^7 q+ x$ k$ D- plimit 限制  limit 10
: E- R5 r5 V- M7 UDESC 倒序. c# e& n. q$ G( `1 ]' T
ASC 正序
4 e* a3 s" n7 I  _* Q; _0 }) q7 A0 Q7 _& T: o3 h, \, y5 k

1 T- I) J" T9 T0 q5 N) [' D, s% S7 k) o, g$ d' Z
活动帖发布页面核心处理文件:
6 K3 F1 _9 q: p7 A- U) d) Qsource\class\extend\extend_thread_activity.php
0 k7 R9 Z2 a+ u3 v$ f- G+ T5 ^8 }/ s) Y$ M8 W( `7 i7 J
分类信息解析文件
9 Q0 m/ K3 j6 a" t* O# n! J4 U1 Rsource\function\function_threadsort.php
; F6 J% L8 I0 k0 y$ WDiscuz模版运行php代码7 j- I: \0 k# R) w1 A! |3 E
<!--{eval echo'源码哥';}-->9 I! v2 |3 g8 J' y: k, m

; m4 M  C% f, ~1 q$ i<!--{eval}-->3 n# w9 `& ^1 b- [
echo'源码哥';' _% q4 u6 H+ `
<!--{/eval}-->8 k6 i! ~7 I3 X0 {5 [, R$ J
标签获得焦点后触发js 0 P* d* J# B. P9 M" \
onfocus="ymgcom()": @/ B  l4 T  L; a+ m6 ]) O

1 F: \; o+ x9 F
, L# x% r$ t" P5 }2 z标签失去焦点后触发js
  K: \6 d2 E" x* d/ S$ w7 T$ P7 Q
. S* ~$ u7 z9 C( L! honblur="ymgcom();"! e/ g- h9 H: p8 ~, a

- \1 f2 i$ u- g/ t$ }( M- H8 \+ W* |- x' b- ^( S
密码输出1*****6
' B( s/ D/ ~# [3 y5 z/ P//原密码为$_GET['password']
7 _. M9 }% P2 d6 x2 L. J, k$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);
% z+ h, O+ b& `- Z" I0 _' b8 e4 |echo $password;3 g; \3 K. {  g3 o, _
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-2-27 10:40 , Processed in 0.142499 second(s), 61 queries .

Powered by 罗码网络! X3.4

© 2001-2017

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