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

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

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

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录
" E5 H' S8 l$ _) u# G4 }0 _<a href="member.php?mod=logging&action=login" title="登录">登录</a>
5 ?5 T  x) P' P% O
. u& R( I9 _5 ?  \注册2 S& {0 o% C/ L7 ]7 {6 R* b
<a href="member.php?mod=register" title="立即注册">立即注册</a>
5 A( v6 v. m* e. f- K2 @- {' j6 \% U
忘记密码* w8 h' r4 {) H: B( X
<a href="javascript:;" title="找回密码">找回密码</a>
( e5 _/ \! h) U* w7 W: j- L; L4 }- q/ b6 {! r+ ?
购买邀请码 1 E. }$ s( i5 M. i! D5 E
misc.php?mod=buyinvitecode
( C# {; R' K% {( D
5 l+ C2 X0 K( q: }0 YJS跳转
) E3 T6 o0 [5 F- m3 ronclick="window.location.href='home.php?mod=mobile&do=friend';"
5 a- p0 @! ]  k/ b( e  z$ p  k  r, x, z  I8 n" \) r
JS更换class的名称
* ~5 A4 O. K, |/ F2 b: odocument.getElementById('idname').className='a';' p: I( Q3 g" h
document.getElementById('idname').style.display='block';6 X4 E9 ?4 }' c3 Y" z! O7 \
document.getElementById("idname").style.marginTop="30px";
+ ~% M2 C" p5 h8 C, @
) Q9 @* B' f/ I  ^/ ]批量替换超链接:
% Y1 Y: g8 E; O) u; r9 S4 H6 Ahref="[^"]*"/ K  C9 U' r5 g% s# k

( U) h& c* k6 H* e  r3 z过滤DZ代码:
- ?% Q2 c% \; n; m( }8 x$ g- Spreg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));/ T8 X2 f1 g" z& r

( A. q) @9 M% f1 i调用单个数据
% E! G' `3 [: T+ E$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));3 X, S( @/ Y3 e7 m; P6 j( k9 Q
  Y, {  U7 Z5 l5 `
调用统计数据' g! x5 G7 [" X9 M' r3 p. X
$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));
6 \; n" B% ]3 X9 r" x
3 y, Q( V! _. g4 t* i* b8 N8 W单数据表调用3 \/ g6 a/ L4 F5 }; k
$perpage = 20;5 N* S2 O! K2 u' r
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );9 W' m, E% D$ p7 L4 ?, W
$start = ($curpage-1)*$perpage;' A0 Z1 M$ }4 o. c
$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));; \; T5 @) S+ z
//$asklist
( c- S1 t% n' b0 R$asklist = array();: o% A; s- z3 j* J# l
if ($askcount) {& X+ B4 U  X$ q0 q+ Y
        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");
; D* t- e' V$ t& ~& I# j        while ($value = DB::fetch($query)) {9 X" {- L( V* h! {7 \% J7 c5 b# c
                $asklist[] = $value;
4 {3 \7 w  `7 D. r! m2 z) T( w        }
$ m5 _( T; b" A- ?4 Y}
$ N* N7 }4 G- A/ d% ]  @5 g. N3 g$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");
6 z  g: H: V8 @/ |9 S1 y7 y4 O' ]% O7 X  @. m  y9 ]
1 d! B  g0 S# D' y) l, P

- e; A3 |' S1 R3 L6 r多数据表调用, ]/ |8 K7 w5 I. p
$perpage = 40;' ~7 b: }$ K+ N) H: e% s9 G
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
0 [0 b  W0 n- E$start = ($curpage-1)*$perpage;
+ T& C/ d! R) X! H! `$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 != ''"));
( n% b. y$ p) M$ M: i//$alist! [) J, D0 A# G) e
$alist = array();0 c3 V$ f# S+ k# s
if ($acount) {
& Z% R" T) v* P+ D# D1 a        $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");6 s7 W6 A% U: @: [  {+ R
        while ($value = DB::fetch($query)) {
7 Z0 m- _6 h! w' f+ w  J                $alist[] = $value;
) P, M6 t. A0 |- N  s3 M+ m        }  R. d2 g  |$ [, O( [3 l) u
}
2 m- ^) k* @/ r  d: R$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");1 U5 ~4 H3 k! C" i* L) c

$ p0 n. t$ M8 R- r  W6 d* _! H$ [2 G0 g. p) k' ^

* R# d/ ^% V$ c0 E, }+ g' G前台数据显示
1 e# M. Z) w: ?9 u<!--{loop $alist $key $value}-->
( p7 j9 A; R3 s5 m3 |8 b<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->
, N# K0 E0 t: N1 D( C9 _<img src="$tupianfm"><br>$value[authorid]
2 j  M3 ?; z- ]<!--{/loop}-->
& H2 ^% X, e, {2 z. G2 H# a' ~/ n$ F3 u# I8 Y. L0 |7 T

9 w' o& r: u# p8 N0 q" h* N取数据表中符合条件的第一条数据0 k; H; p: D* k
$app=array();9 M8 ?7 V( p3 V  v; \& U% X
$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");
- y) R( j2 n0 m2 D
/ x9 }+ [0 P* n  L5 t
% \: l, j& k: A6 ?' {. m* `
. L5 z; q( e# N' c8 ?; y8 l人性化时间戳
9 n: f6 {5 j* ?0 y<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->
7 w/ Q7 u$ j/ y* V% C<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->
4 T$ l$ W8 K1 U! k7 e( @
  Y: Y1 h8 O5 i& J( r# `
5 z% y8 S$ n* M5 ], P/ n截取字符字数
1 M) X; d& y# C! Q: A5 Y" R6 }* _/ }# W. R<!--{echo cutstr(这里填写参数,40)}-->
) O, P2 ]# q- l# e0 Z1 u
: M9 y! x: f1 U+ h$ I" Y, p7 U- ^* _7 b3 s3 c6 y; {
过滤DISCUZ代码
) \1 d0 n4 |; d" D' gpreg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
1 B8 [4 \6 U4 a% O* g6 }' x% t& k2 q

5 r# l- P- Z7 \* O* K% x/ B; A写入数据库
* }2 |! V2 F! h' `+ ^3 {8 d! Mif(submitcheck('tijiao')) {$ c7 e# Y0 n. D% K
        $setarr = array(
2 l# J9 _0 f8 [* m# t) E* A4 ~                'tid' => $_GET['topicid'],9 T- l: Y/ {2 H7 }+ e( \9 u
                'name' => $_POST['name'],1 V1 c; T" P: S
                'position' => $_GET['position'],
9 @; S# a; ]- K5 F                'dateline' => $_G['timestamp'],
2 K# Y' U0 O6 G" c9 y9 }        );5 c- ^8 f0 f" K0 _
        DB::insert('abc', $setarr, 1);
6 v2 x/ p  r+ b+ ]! ?        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");; |& c4 e9 H4 U9 z
        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");( b" i  r* q" R2 S
        showmessage('成功的提示信息', "跳转地址");$ B# B' @) g2 t; i/ ^* b$ H# D
}, [/ d, o  ?. R. p) N' ~! u
& V. S: Z/ A+ C6 e3 T" L

3 F5 J2 b4 q# x& r9 _# W& J' h% ~0 c" X
表单提交:  O5 M% m4 d9 n
<form action="do.php" method="post" autocomplete="off">
0 f  f" M! z1 D) \        <input type="hidden" value="{FORMHASH}" name="formhash" />2 C& Q: v; z5 j" a
        最低奖金:<input name="qi" type="text" value="" /> ' l$ X6 V, C( ]
        最高奖金:<input name="end" type="text" value="" />  
3 D" u0 S! t9 f3 Z0 R+ \        <button value="true" name="tijiao" type="submit">提交设置</button>: e/ o$ i& i- c5 V
        <input type="hidden" name="tijiao" value="true" />
  Z8 V4 r2 U3 M/ d- l+ x/ U* v</form>
6 ~# d, s( i3 W; ]* Y" I4 R+ F) M, U, F/ {/ m  ]

' S! K( j( D6 Z4 ~; w2 f4 M7 G
+ b( A( b; y) w以下两个时间格式是对等关系( p7 s1 K" P' _! F  ?
date("Ymd",time());  201502122 F. ], h" C. U) I
FROM_UNIXTIME(dateline, '%Y%m%d')0 Y$ h. ~% O8 M1 o

. r& w: k8 y' C" _前者用于PHP,后者用于数据库调用的字段的格式化
0 D0 h" W  [% c7 o
$ K3 X( _; ~0 |, U调用图片附件- T/ d3 l; Y8 @, {% s% I' z4 k; g
<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->
! ?! e3 T. s0 Q# P- K! H; m" C; `8 M0 M

$ n; m& v/ i& H# \: b数据库循环嵌套调用: Z( r- `& M& D- h* c! ]
<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->( V( a0 j  v' c" W( Z: W4 m
<!--{loop $slides $slide}-->9 @9 ]8 \! n& x' ]4 u9 _9 ?
$slide[name]* ~# K0 o' Z- U$ x+ }+ B
<!--{/loop}-->
9 z8 j) n7 `' B. j# f5 x
6 ~; X8 I$ A% L" C( \4 i2 A' c: h+ e5 M/ O' L! _" f- U
ucenter无法登录:! j0 _$ `, F7 `& M! D/ ]) p! ?( n: F
打开uc_server/model/admin.php* k& G8 f  I5 @7 S% `7 W8 ~
找到第22行的
: E) o! [% y2 E' H. I, j$this->cookie_status = 0;
' X# _5 L+ `1 W1 S9 p; ~0 h+ y, l: F6 f2 X

% n* T3 y4 L, i改成2 e2 G! T) L1 G6 i
$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;
% J( N, H  L" k7 [& Y) r, d9 r* U. j
2 l8 p) [# E/ u+ f# p% c" j5 D9 N2 [) [6 ]+ t/ Y  @3 g) G

$ w) X0 A' e2 ]4 K& Q无刷新切换li标签并且同时加载框架页面:* s5 A" _+ h5 R& a
<script type="text/javascript">
! K5 z( k" r, W1 bvar jq = jQuery.noConflict();
. ~/ Z0 V0 z- w. w8 ojq(function(){
4 b9 j+ @4 n, D: v- l9 U+ N) E! Q" Wjq("#changemenu>li").mouseover(function(){
. u# x0 I" V0 Y; X4 zjq("#changemenu>li").each(function(i){ 6 k) \7 k) V6 Y  j9 Z) }% `
jq(this).removeClass("current"); 3 S: b" |  \% t
});
9 `8 s  q9 J" W, a  P* j* e# c  wjq(this).addClass("current");
, j$ W( r5 j9 {+ w; K: l+ Y7 ?document.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';% g. p$ Z* p* I  |
}).mouseout(function(){
/ m5 F( G2 y, k. k, b- J) Ojq(this).addClass("current");
, a1 G* ~- M: i}); 3 A/ l7 f& j! ?+ H) v6 d
});
  [0 h( r& @8 V6 @0 p</script>8 b% j, F0 N$ s2 M' ^( R4 R& {
<ul id="changemenu">8 a) [. k1 h8 a+ T* o
   <li class="current" dataid="1"></li>" Q9 L; f  {: y
   <li dataid="2"></li>
7 a. k" N3 K2 \4 O; X3 R  c7 i</ul>8 c. e- E' h6 j
<div id="changenr"></div>$ }# N6 T6 C* c) R( t$ q
9 u- n+ ]. [# z) D% y- Z! R, o

" J% S- t5 H$ J$ S. E4 I8 O5 F6 K1 L# I1 z
快速发帖
' L6 L3 q. G; b<a href="forum.php?mod=misc&action=nav">发布新话题</a>
7 J/ P% j- \* X; E( D4 ^( v. U! Q
8 D; v% w4 G1 P/ J5 E  d- z# l! p: i6 P3 ]2 W

& F, R: a2 C, [3 a% F! bDISCUZ JSON数据解析获取, H: h0 T9 ]5 @3 D  Z
$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';
" q1 E9 x) j& v; b6 s" `$newstr = str_replace("\","",$str);
  l7 b; A2 ^1 i; K" M7 `  R( d, D$data = unserialize($newstr);
2 R' U7 K+ ]- A0 G6 e7 x) H1 K) j' Aecho $data[sitename];//输出结果为源码哥0 A2 O6 i# F3 |; F
: b4 ~7 f! [/ F0 e9 y$ _* \! t% H

( ^& `6 Q0 Q5 @# n! M  u1 s
/ ~" A+ J8 b) t% m8 ~DISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:
! g& o4 r/ W5 m2 m. {/ C9 k$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);( f4 _) ?2 g9 o4 @$ ^: L

% O$ s6 _: h: W8 E$ g1 z6 ~- V8 S3 t$ Z8 d* S
修改为:
% _3 n: E# y* J: _$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);
, L, u9 o  Z, Z& A/ @8 k+ X( D$ t) w$ T0 m# q) S9 M

9 o! ~3 C- u2 t( e9 \0 g
& B7 c" H. F# e! s+ RLI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):0 a: F! c' q* X3 |! N0 n
<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>3 S! }( B3 w9 _# ?5 Q2 J  G
<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>5 f+ u8 a* P/ X; i' p% g* r: n- D) G
<div class="list">
- i; Q  c/ m: b+ N/ K        <ul>3 K  x0 w$ H* \7 m% f  Q
        <li>源码哥</li>: A6 Z: C3 B9 d. o5 d4 Y
        <li>源码哥</li>' m, T" ?; x1 ^" j
        <li>源码哥</li>' J& N  @* w: M  x/ K
        <li>源码哥</li>! T! x- ~: K6 q& [  \
        <li>源码哥</li>
+ O( ^2 {) }% @% X3 K# w        <li>源码哥</li>( \: }/ S0 P8 j4 D) V! d
    </ul>$ F- [* T5 P" X" |$ b# _8 h
</div>6 @9 X" i+ M- u$ A8 |# T. W2 x
<script type="text/javascript">
. b  v9 A7 J) S& n1 \9 d8 S, Y    $('.list li:nth-child(3n)').css('marginRight', '0');8 ^$ H# E8 ^0 {# W3 U1 e
</script>
8 q- C+ \6 a2 E, E7 U: O  A. N: e( @  p
& z, S7 H& g, ~2 n& y! B# y

8 O9 k* j! s6 U常用词汇
8 `7 \- `9 b( ]1 B. J1 [select 选择/ I' z/ o, s; o4 u! I7 e
count 总数" J  ^6 X9 t4 W( I$ o
table 表6 ]) b* T9 p% e3 ~( _
where 条件
8 z, ^! R0 t' V" l) I/ J) ?2 oresult 结果! J  r, |+ G& Z) T  x# i5 ?5 S) _
perpage 每页  T* N. o/ X+ w/ Q. Y5 R8 U5 |/ f
curpage 当前页! O3 C, z# m; P8 o1 L, H$ y/ ?
update 更新
+ u% I! Z0 D( `+ }delete 删除
, Q6 H. B) T5 A+ W$ }insert 写入
1 y5 w" ~3 U5 n! vdateline 日期1 z1 I$ x' m  c3 @4 S
time 时间$ M- D# s$ b- |% h" f
echo 输出   <?php   echo '123';   ?>
8 C7 y/ d* c  N" D, @- H2 @multi 分页函数
5 T, `* l, T. A1 |. c' w  Sif 如果3 |0 g& M  c# n( `
else 否则
5 p( l% Q! C9 X+ Belseif 2 d& ?# J; m$ q: t9 n
start 起始
' A. f+ k0 G0 T# b* q+ mlimit 限制  limit 10
! m! s- l. l" n# M( w9 hDESC 倒序# ~! q1 d, D8 w! G" r
ASC 正序& X( n& [1 _7 |! U3 J6 J, c
' W- p& f5 k: n' q4 Z# x
1 Y% N' G$ T. L# z

, N# g/ I8 `$ S* ]8 k活动帖发布页面核心处理文件:
3 I* S0 |4 D. f+ ~& U, L! v' gsource\class\extend\extend_thread_activity.php+ C+ E1 L+ z& m6 @

0 m/ p$ d5 C1 F0 V分类信息解析文件
; i. {6 \5 k7 ?" I$ bsource\function\function_threadsort.php
! {, d: z* b8 }+ F6 A) HDiscuz模版运行php代码& H3 s5 Q% m' S- R3 F* I9 l  `
<!--{eval echo'源码哥';}-->. ?; u, q% c2 O* a$ ], \) r, g7 ^
) W* z& v0 o5 n+ z% g: p4 E
<!--{eval}-->. f- K, I& X* \9 H7 x8 [4 k3 u2 E
echo'源码哥';  h( H5 z. \3 _# k: n  }) o
<!--{/eval}-->( O3 d+ a2 O2 C) ?1 F  U
标签获得焦点后触发js 0 H6 L3 D3 `4 u( O' C
onfocus="ymgcom()"/ T8 V( I% i$ Q( o5 I
0 V! C( ?; `9 r8 w
+ l' t  W* ?3 |5 e* E9 ~
标签失去焦点后触发js
5 n( K- m: K& _. B: Y
0 e2 V4 f5 {1 e+ @0 Bonblur="ymgcom();"
) N& J, j0 {6 @; I  a5 m4 d
! i3 W3 h% c: @  S4 \, k$ f6 S+ C0 W; n/ t
密码输出1*****63 z# u$ A3 q& B
//原密码为$_GET['password']4 b0 V3 I2 N8 y: Z: F: }
$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);
& q4 Q& s4 B) J4 Q6 [: @' pecho $password;
+ X* q/ a& V2 B7 ?! S 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, 2024-5-8 12:43 , Processed in 0.137299 second(s), 63 queries .

Powered by 罗码网络! X3.4

© 2001-2017

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