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

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

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

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录( r+ z- V/ h9 H
<a href="member.php?mod=logging&action=login" title="登录">登录</a>! S7 K( B$ f" m
2 X4 `7 _: s* E# ^0 e
注册
2 E7 m5 J) ^+ Y<a href="member.php?mod=register" title="立即注册">立即注册</a>% z% v7 I1 p( q$ i0 P/ V

9 a" Y8 o9 c! r) P忘记密码
+ s$ h  e6 d' q  Z<a href="javascript:;" title="找回密码">找回密码</a>
, h2 k, b' Z# @/ ?: @# P
6 Y- Y$ E) o3 ~3 M5 L2 P$ D' J购买邀请码 / L7 R) k+ H. ]0 U5 Z. Q, A& \
misc.php?mod=buyinvitecode4 I" h) T0 a& L3 F+ ]- p
7 G+ |# N3 n% |9 ^  I& L
JS跳转
" p- j% Y! y9 }onclick="window.location.href='home.php?mod=mobile&do=friend';"
- x, o( U( p# r9 |. ^$ T% n* m
5 x8 L. {2 M  N& s/ x& NJS更换class的名称2 _8 Y# \" {4 \4 B* d: V7 y
document.getElementById('idname').className='a';
+ Y( e  D9 B9 k2 ndocument.getElementById('idname').style.display='block';
6 w9 B1 [+ N- f* h/ N% O' hdocument.getElementById("idname").style.marginTop="30px";- [4 a; |# ]& f- ]2 a2 H
4 c0 k, e5 k7 j& t8 Y5 {1 p8 n& K
批量替换超链接:
% k0 A6 C- w7 u, E+ ?, qhref="[^"]*": F' `" I. U6 u9 v

" Q  Z' N5 W0 ]# d过滤DZ代码:6 m7 A5 s! T+ f, [4 H
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
% a  q# m# x. n( a" x5 p
5 _" N0 c) V" C  y# p1 W调用单个数据2 Z! b" z; V: z7 f4 K
$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));! ]( _$ E  i, Q- h5 m
2 J; U( ?# e1 S9 ]! o
调用统计数据4 ?* ^( i) q: g# I( T+ y
$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));
2 f# F8 V0 s+ Z+ u1 U
- H. E5 g9 R! G& |单数据表调用
# w+ L4 N8 \: K5 g! Y+ \9 g6 {* `$perpage = 20;! F, v" v* o; C  _
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );+ ]& d+ O# w5 W
$start = ($curpage-1)*$perpage;
4 y8 j0 }2 `" t$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));
) F6 Q- o- n& N- W5 m) J" ]# H//$asklist9 U+ ?2 T' _$ K( C2 M' \
$asklist = array();
! t; S7 U* I/ Z" \- u. Rif ($askcount) {. ]' D# H  E' \3 L
        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");3 _/ r8 }- `7 r
        while ($value = DB::fetch($query)) {8 l: q- ^/ P7 _& I7 I& o
                $asklist[] = $value;
1 s( D" M; g  \. G: y( R        }) W( X+ d$ o0 C  w
}( e7 J* T- y0 _' y
$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");
( f3 m' s* Z: `1 E- O- p' k5 {
0 a" i; N' {4 X8 w2 |0 y4 F1 p1 v7 g7 {

) g9 t/ K: q% I9 Q/ Y多数据表调用4 w% A1 K9 U9 l- I' I" T1 T  I
$perpage = 40;' }- W& u2 c3 k3 z* t( Q5 S( L( x
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );( L$ B+ Z8 ?3 ^  K$ X" l8 ~
$start = ($curpage-1)*$perpage;
" u( [- ^: P! E8 p$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 != ''"));# [/ X8 u9 O* O" a# L/ m+ W5 ]  J, b
//$alist- ~8 Q2 [' @; l/ h- f" u
$alist = array();
0 Z. Q2 F! g* qif ($acount) {# N9 {7 K7 N, j+ ~* z8 w
        $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 K& v3 O/ h! D
        while ($value = DB::fetch($query)) {. ~8 Y- d; t' U, ?3 S- y# j
                $alist[] = $value;
: n4 }8 @% @. O        }
/ ~% Q  \, `4 Z}
7 {3 Z. w4 F/ |8 c6 ?! \( ~5 A$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");
0 |8 l7 B+ `7 H/ X7 w9 J+ {7 o4 ^% ^" J2 _- V& R6 b
3 O: U; Z. y6 |1 D- z: z$ P
6 j) _- Z+ t. @! ~( T
前台数据显示
! J' Y  l3 {2 a% }6 v- K<!--{loop $alist $key $value}-->5 g8 r) }% m$ M: y( \: s
<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->
& ^% r8 {; L" T) g$ J  s, g<img src="$tupianfm"><br>$value[authorid]. }* l6 n. m. M" g7 A# `( R
<!--{/loop}-->
$ n# |2 u6 Z8 P+ \$ I2 o* g& I; S
* |8 V, e! X; x: _0 v3 l: J; x( J/ n3 T$ t) U5 J9 k
取数据表中符合条件的第一条数据
% v* h" g) E7 ~3 L9 y8 X1 c, s$app=array();, D' s. }3 I, D0 Z: z# V+ j( H
$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");
+ v, l* g. ~' m' q  o8 o1 Y; O, E3 K# ~& z

+ q3 f, @5 x" y' G! \6 |3 W( Z9 q$ [5 c) Y: {/ Y( G6 n
人性化时间戳1 x" X: ]1 }( O* V% O8 F1 z
<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->
, N. N0 ]0 |; }1 T1 j<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->" Z4 n, C% l9 N$ d# c1 b0 P

1 j8 \: z6 r( X! l5 I1 ?% Q' a+ H" N  _
截取字符字数
1 {6 ~6 \( m6 N# T0 y0 m<!--{echo cutstr(这里填写参数,40)}-->
0 Q. v8 [6 q6 x- O# |$ |, s% I9 s# I5 T3 r

+ V. w) c  S8 g' J2 P过滤DISCUZ代码
6 X" K* q( M. `* k9 Qpreg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));% d+ K6 Z4 K2 y; q+ p

2 E. Z; S0 G0 a- X( [& w: H+ Y
* x6 j2 z! B0 o# [  [写入数据库
% K. k( h( G) _if(submitcheck('tijiao')) {- V8 n" P6 j. r+ z) a: z6 s2 W
        $setarr = array(
2 L* e: t2 z. _% v8 y                'tid' => $_GET['topicid'],2 O3 R% s# X9 h' w  F. M2 J* r
                'name' => $_POST['name'],
& e$ X1 y& ^! l. h+ l% L                'position' => $_GET['position'],: k4 x# D' A1 W
                'dateline' => $_G['timestamp'],
  |7 J' A$ {( r/ Z0 ?* V) _: s        );
% K6 n; B2 }6 B: U4 [/ p# Q        DB::insert('abc', $setarr, 1);
2 C4 I- M3 e* g+ ^/ P. o        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");5 y3 x' ]8 W, F- |6 P
        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");
8 @! I; \; X; E+ Z. e+ g        showmessage('成功的提示信息', "跳转地址");% `; d8 s, w! f) u" M6 \: x8 }
}" S. t% _% [7 k9 Y; i; P

# ^' g0 V* Z) y$ }" D  h
! T- a& s# ?& o' t! \* n
: t$ [2 r( a) h  Z+ x表单提交:! }1 {) M. K; Z. ?
<form action="do.php" method="post" autocomplete="off">" Z) t9 M( \  Q2 P; W
        <input type="hidden" value="{FORMHASH}" name="formhash" />0 z: N9 Y/ k6 z/ m
        最低奖金:<input name="qi" type="text" value="" /> 
) u; {! ]- N0 o- N4 K. b        最高奖金:<input name="end" type="text" value="" />  5 K% Q; j1 V8 j/ D' ^1 }8 \
        <button value="true" name="tijiao" type="submit">提交设置</button>7 A' d/ F' K5 l6 g! p! @
        <input type="hidden" name="tijiao" value="true" />( G" r0 a3 D# J2 r4 X: J
</form>! o! t2 I" ?4 y  P2 y" f+ b

& t- q$ P3 e  p
& e6 g$ t8 U! a- n2 I% y; @7 D/ H
7 G+ y) t3 g$ V. U以下两个时间格式是对等关系
$ |7 c3 F: x+ o: ldate("Ymd",time());  20150212
+ H9 Q2 L6 f# q+ cFROM_UNIXTIME(dateline, '%Y%m%d')
3 F( ~. @, |' _( d; t5 {5 [3 t! ~2 A% u# P) \) J0 e/ u0 E  X/ p
前者用于PHP,后者用于数据库调用的字段的格式化- R- q" A, s$ z1 j3 T+ S0 I

7 ~  i; l' Q. Q: k调用图片附件$ I  d" j" p' V7 J
<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}--># O' |3 J8 O$ _# X- o, V: E7 i

/ J7 D  m- t8 x. H7 ~, S0 H
0 z2 S3 ?$ l  Z7 S# E数据库循环嵌套调用
" g9 T* l' g: \3 k' j<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->
3 `4 J: m8 I- K<!--{loop $slides $slide}-->
) W7 w4 _! A; f7 A) k3 Z! {$ Y$slide[name]
' }6 C5 ]9 `4 @$ Y3 R0 T<!--{/loop}-->0 o; t& E  h* B; y) s5 J

! M* A* Z4 t5 S( d# f8 G# Q, T4 d7 x) H" [6 d" t) g+ C
ucenter无法登录:: r  T* a: i0 A5 r0 @! @; F
打开uc_server/model/admin.php! d1 p; h4 W/ W! a; }0 |; X
找到第22行的' Z5 O4 j- p9 p5 |& ~+ s  V: W8 z
$this->cookie_status = 0;* A$ ^& L* Y$ N( m" c2 A
, m9 X  y2 D9 `5 {0 `+ f3 \! v; O! F8 A

4 i: Q8 ^9 m3 V7 g" i" M# V改成* O" G( a" R6 I. L
$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;' _% M2 b- ?# J, C0 i$ O6 r
% g1 f5 [8 `* }# C: ?

% L2 O, m3 T$ N1 J9 n; g4 X2 T' N+ Z8 {8 p& W
无刷新切换li标签并且同时加载框架页面:
6 S2 ^; i/ x9 T; _$ o) f9 G) q3 k* q$ l<script type="text/javascript"> 9 }6 K3 _% L/ U  S
var jq = jQuery.noConflict();
2 P1 }2 Y+ }" R3 wjq(function(){
" U3 H9 \1 a) ^) njq("#changemenu>li").mouseover(function(){
+ X7 y: M0 e  d8 ~1 Z4 u$ sjq("#changemenu>li").each(function(i){ 5 g- X6 O8 ~+ L" l7 C4 A
jq(this).removeClass("current");
, j2 x) F1 Z- q6 v; ^4 V+ U# C) Y});
, F+ V+ J3 v" D' J. I5 w6 O* ljq(this).addClass("current");
" {3 O( `' m' }+ W6 {+ g$ E' Fdocument.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';' }9 f( N+ _: U  p# E+ e
}).mouseout(function(){ : [) _3 T3 B1 ]
jq(this).addClass("current");   X& Y& M8 H+ X' D
}); ; k' E. z* ?1 U- Y
});  z9 w  ?( s6 i
</script>
! a& E6 \" S' h" K# S<ul id="changemenu">
: `' k9 e" x  k7 _: U) |   <li class="current" dataid="1"></li>
. W" G8 {4 {& A! N- G3 E3 ]   <li dataid="2"></li>
2 [3 U; P: L$ Z# f& n</ul>
- w# [  P9 s' e# U<div id="changenr"></div>
% k7 O5 l5 n* H  f. N- Y8 W8 H6 A1 a7 {! r8 s& \( Y
+ v7 p+ Q) S5 k1 p- i/ s
+ Z8 s* E& S6 A! }- V
快速发帖# O% b8 ^# {$ l) W
<a href="forum.php?mod=misc&action=nav">发布新话题</a>- s& ?9 D* Y8 u: g% u0 X+ z9 x

0 ~! Z$ F! |" t% g8 k9 v  Z
+ r* B! h* y4 c/ `: W; L4 G5 N8 f# ?" n) {& F) I) V8 @
DISCUZ JSON数据解析获取
, E5 e1 W- f. T$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';
6 g% O- Y% Y' Q5 ?9 F7 {$newstr = str_replace("\","",$str);
$ _9 P$ P3 l1 N& G) O$data = unserialize($newstr);
, d3 `9 u! h- x/ J% }2 ~8 \/ Zecho $data[sitename];//输出结果为源码哥: A7 m# v) t# E( S) T
2 V" ^$ N! z' [# U  I
- {& F4 j+ b* W% `5 n
$ }/ n# ?; h. Q* |' e& c' C! q! f
DISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:: k$ z' w: L7 X/ `3 R+ O! F
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);) Q$ }: @$ Q0 e$ N1 ]

& I; X0 @7 y1 Z- D* k& R$ z) I: |/ c% ~( W( L
修改为:
" [" s3 U6 e/ F- ~6 H7 K8 P' K& r$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);
% J! O5 u/ D( j2 l+ R) x* t2 O6 @) i& a; M5 c, V8 U

' a* |! X8 j, Q
! F! Q! r9 }* Y) q* O/ @4 HLI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):# T, T" S- K1 T# D9 n; P
<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>, h5 l0 V1 W* F
<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>
! s: a4 _0 r, e3 A; w6 x<div class="list">
( M; {* ?" W) i' H) s+ Y        <ul>
& r: n+ m8 X& _9 g        <li>源码哥</li>9 ^% d7 g& {% K2 X' N+ E
        <li>源码哥</li>6 R( [$ w! H- G3 A  ]" M
        <li>源码哥</li>
  o: H5 ?; d/ v' N" H# q        <li>源码哥</li>
/ u9 l8 t1 b  F1 ]- _        <li>源码哥</li>
8 [7 d* U% u7 |& n# I7 Z        <li>源码哥</li>) {" j! C8 R' X! }% x. v
    </ul>
/ x7 j1 P' Y/ K  W: b</div>2 j" |& v( v; G$ M. B
<script type="text/javascript">: t4 T1 u8 F4 W: V  w& I
    $('.list li:nth-child(3n)').css('marginRight', '0');* n* t0 g% [8 x/ X
</script>8 u4 s$ ^; ^3 r
* H1 W4 S0 }  Y3 d

3 }. B9 D( Q3 W5 ?) L3 Y4 ~9 p' G7 s3 B- g
常用词汇' g% w7 K0 T- k- ~
select 选择* P3 _. i0 _5 C8 e. I
count 总数
( Y  l. q: b' v  t! ~( Dtable 表
- @/ {- v$ M1 ~: \: [& Z  @. j/ s# ?where 条件- |. Z; m0 K) \
result 结果! p; q9 g" o0 t, E" _& [6 T" s
perpage 每页
" [2 F( v0 ?9 I6 D$ qcurpage 当前页0 y' k; n3 x" ^3 a6 I
update 更新' i4 @+ X! a, m! s5 f3 S7 {
delete 删除6 E6 W4 i! d8 J. r( E( p6 r: n
insert 写入* F* k/ |) b2 H5 p
dateline 日期
) P6 @( n5 R) k2 c! H8 Ytime 时间
& n! R- n# ], l" r9 ?  yecho 输出   <?php   echo '123';   ?>  `; u2 Y" y- t4 G3 I8 u3 J0 q( U
multi 分页函数8 Y  a: a0 y# R* l
if 如果5 Q- O" t0 M* B. L3 }0 n1 R* I
else 否则
! _' F" {% }+ B2 p) K5 ~( relseif & x( E- i( V- e% @
start 起始
/ y8 |' u4 y: K$ o' D5 Q8 N" tlimit 限制  limit 10
; d  p2 y* J9 \DESC 倒序
" W1 P! Z2 J! q7 Y1 ?7 YASC 正序- R1 N% n# O$ B; r; A
) b" S5 S" m9 u* |6 N5 L% c% _

5 V3 a; B5 z' B* @2 r7 B2 J& ?  S
活动帖发布页面核心处理文件:
, H+ l( m. H1 h' isource\class\extend\extend_thread_activity.php
/ X& ^  S1 d- w. b3 S' f, D: J1 }8 {) J
分类信息解析文件5 Z' m. h: {3 _8 @- y, X8 f
source\function\function_threadsort.php
. d$ {2 N  v% `3 w# ]2 |6 rDiscuz模版运行php代码
+ Q6 o( P3 Z5 W, @' \<!--{eval echo'源码哥';}-->
" b) Q# ?9 v& O+ Q8 s8 j% r! U6 x$ `# R" D5 z! q* q
<!--{eval}-->
# E  Q, \, f+ Vecho'源码哥';6 o" H( l% M- q2 @  H3 p5 F, d
<!--{/eval}-->
7 c5 W1 Z) v: }标签获得焦点后触发js ' z& w/ e% a4 ]/ U2 t) L
onfocus="ymgcom()"  Z1 p5 s1 r7 M  I3 W1 {7 K" ^
& u  i" |. O9 u5 Q, e

1 [% u0 I* w$ \$ i- F3 N. a( F9 \标签失去焦点后触发js 3 A4 h6 ?# Z& c( i0 v( @

0 C5 Q& ^9 }1 C* Lonblur="ymgcom();"
* `6 T! ~  c: A& d2 G8 S0 G2 }* U- K- l

" f9 B2 Q5 W- q/ a4 d6 F密码输出1*****6
* F/ O  [% j, X; Z# n. @//原密码为$_GET['password']  n, h  s: K6 ^4 b
$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);3 y5 a- [- k+ R  F
echo $password;* Q7 w" \3 \1 r# j6 ^2 z& e* c
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-4-20 23:25 , Processed in 0.137827 second(s), 63 queries .

Powered by 罗码网络! X3.4

© 2001-2017

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