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

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

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

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录3 P8 F% d  j. n% c
<a href="member.php?mod=logging&action=login" title="登录">登录</a>
7 \) a2 s6 ?5 A; H' h, K  W8 c" {$ g8 h0 Y. k4 ^
注册, e, G( j, i2 p+ C
<a href="member.php?mod=register" title="立即注册">立即注册</a>
. }' @: u  q  ?9 i  X
7 D. m  f$ H) J: r- V0 F忘记密码) X0 K$ U9 ]6 r0 P
<a href="javascript:;" title="找回密码">找回密码</a>1 P; N7 D% w- v  F

2 K, e$ H# G3 A9 a' @购买邀请码 5 |  b5 j6 @6 w# `) T5 J" F) y
misc.php?mod=buyinvitecode
8 }. Q# {* z1 I9 Y- E/ y8 {: X8 z+ I5 Q! N
JS跳转
* C4 @( z+ b7 I/ X3 tonclick="window.location.href='home.php?mod=mobile&do=friend';"
, K( D7 |0 N: e( S1 T& T: l+ n( G9 o( ~. i7 k: |7 Q/ u
JS更换class的名称
+ y9 u  X8 B  Z4 [2 n$ _document.getElementById('idname').className='a';
7 b# c9 E3 r5 c% [3 T- l8 x6 w* Xdocument.getElementById('idname').style.display='block';- o, W% `2 U* U
document.getElementById("idname").style.marginTop="30px";0 ?+ w- c; ~- Y4 l

1 D' Z7 S! z+ E& t0 [批量替换超链接:$ \. [# M9 q0 t6 B0 S, P
href="[^"]*"$ K) Q' r' G6 }, y% x- V0 @" H
' Q5 @0 m6 O2 V
过滤DZ代码:2 O3 z, X5 h$ k* E# `$ ]; D
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));1 r% y# p" S6 x9 j6 H9 r* u% |( J. x
+ J% h. S- N7 }& t- w
调用单个数据
% W( ?0 u" f! o: z( J$ e) a$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));
, |; t5 B* i4 f$ H# Z7 x: v4 X' Y9 \" L9 e% a: ~
调用统计数据
: s4 i. n0 {8 y; ~" [$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));
0 h* P3 l) e( h5 y
2 [5 T8 ~" o+ X/ c单数据表调用
6 \4 C' h2 y6 A4 l/ |& w$perpage = 20;" e8 s& R* Q/ f9 D# R- R) k7 F( F
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );0 |7 B9 v% z/ O3 p) H+ b# _: f$ z
$start = ($curpage-1)*$perpage;. `+ S7 M0 ~0 \  M
$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));  V+ \6 {7 a) N
//$asklist
4 X# E1 I2 h7 x. \( i3 u$asklist = array();
* O( x3 O$ z. R4 K0 V% W  N4 Uif ($askcount) {
1 g; t- Q! o, e$ x  i5 X        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");
' t% M6 `: m- G' E2 A+ Y        while ($value = DB::fetch($query)) {7 o8 P; ^4 m, i( L3 g+ M' H. r9 i
                $asklist[] = $value;
$ c% ~- v; Q, g        }0 ]2 i" \. _" g  t9 f
}& A+ Z# x. B* t5 {; S1 B! R
$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");
( Q( k$ a# V3 ?9 P( W% w; k- K/ d9 E3 _' x
" y8 [1 K* ]* I' z, f; z6 T! i

. m/ a' X5 i7 p多数据表调用: W. T8 L$ D6 n3 O! D# D; l+ M
$perpage = 40;' A7 ?5 E% O% ^
$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );% v* {0 Q3 b! @( M0 j
$start = ($curpage-1)*$perpage;
, h1 G! y6 |8 V) a" Y/ l3 F$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 != ''"));
* B! q0 Z! e  Q% c8 |* V//$alist0 _1 X* Y9 N! o+ `# E
$alist = array();
7 @" q$ O8 x. w# Zif ($acount) {1 x! C6 D: x: t0 b' _4 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");
+ n/ S1 C( |$ X) Q" J        while ($value = DB::fetch($query)) {' B! L) s; z1 V3 Z2 w
                $alist[] = $value;$ F8 O; J. R  F1 c( V/ J+ P
        }
1 g1 v. F7 e$ Q% @}- E6 A: b$ g1 B$ G# F- u
$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");
7 S3 v3 r. p- J7 s/ f. U, N9 o
: X4 F7 R) Z1 E- e# |4 y* L% r+ R+ v, p; n# y4 @. E; i
" \6 r; k% M0 m1 J
前台数据显示) k2 v5 J4 m. b* A4 g8 n
<!--{loop $alist $key $value}-->
/ u. }0 m9 S) A( `2 [# G2 E8 B$ ^<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->6 E) l, @) F6 ], q0 y. {
<img src="$tupianfm"><br>$value[authorid]
. h9 o7 u' p- U<!--{/loop}-->% {$ ^) L1 m" S6 L& e% ]
1 \2 ]9 w. \; l  Q% q

0 ]/ i, q& p: T8 l3 |取数据表中符合条件的第一条数据2 P- r  u0 F9 |6 k- }7 c
$app=array();' w0 K# Y, H  |2 y  `* e$ C
$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");
5 P1 @) N8 k# Q9 ~$ B6 c" b3 @
8 b. S. T8 T* I! m! E7 s% I
0 @# d$ {& X8 h8 [/ T# U& u9 V9 M6 D! Y
人性化时间戳
4 o$ I: F$ r. H<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->
) X6 Z9 _8 i9 M* W3 T5 a: O<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->
6 {8 @+ _3 R. K0 L( j; x. G% h7 i; Q- B8 J2 W% q* l
% ^& r4 |/ V3 A, Y2 J
截取字符字数, L/ \# K+ ~' ]
<!--{echo cutstr(这里填写参数,40)}-->
- h5 U1 c% |* w8 n' P2 }0 v( U; w

; {& ?2 B, g) W1 \% @% H: p4 H过滤DISCUZ代码  G& s8 u+ @' }: P: y
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
3 G. ^7 Q7 B8 t( @+ `1 w6 ~' f% Q2 r) w) H/ }
  J; E. Z0 k& H; Z. e- W
写入数据库, d0 x3 A& B: U$ C) G9 h
if(submitcheck('tijiao')) {) l! x) K, T' a. M) {
        $setarr = array() ^7 d3 y2 w# z; B1 w7 }' O
                'tid' => $_GET['topicid'],8 ]) E$ N# @/ R3 j, j# |2 r
                'name' => $_POST['name'],
4 B4 c% }# }4 u5 d+ j+ ]                'position' => $_GET['position'],2 ?$ [) b9 {" x* J
                'dateline' => $_G['timestamp'],
  O  U. x% e  q. s0 E5 k  G        );
. {+ H0 \  I4 J1 [        DB::insert('abc', $setarr, 1);2 k; @3 v4 L! e
        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");6 h  |0 {" n5 [1 y  U+ ~
        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");  z6 ^& y3 B$ Q% q9 p6 r7 {
        showmessage('成功的提示信息', "跳转地址");
" J; h* G5 r; c}
* l- \& W' E! J" |. Q' Z# b0 X$ O6 G

  h) ?: L2 n7 u. L" @' W1 a1 _1 z; j) [, L8 }& Y3 }8 A
表单提交:+ b8 L9 _1 W6 `6 @9 |" b4 c6 u; @$ d( q
<form action="do.php" method="post" autocomplete="off">- a2 }$ u( C1 D
        <input type="hidden" value="{FORMHASH}" name="formhash" />
, a+ I. Q  ^8 u        最低奖金:<input name="qi" type="text" value="" /> ' @' o. X6 k( k4 n: p7 K1 ?. V
        最高奖金:<input name="end" type="text" value="" />  
; ~$ T% s' {6 _% q& ~8 {3 h        <button value="true" name="tijiao" type="submit">提交设置</button>
1 n2 U6 ?: I/ ^& n' l7 N/ M1 `        <input type="hidden" name="tijiao" value="true" />; ]$ ^! j2 W2 w$ t$ M5 m( ?
</form>8 j  u, D9 K  [) F

& A! M9 g! m. r1 E- s  M1 Z
  t' ]" |  `; l5 t) w* ?
7 L1 A5 t8 q- W, q* K以下两个时间格式是对等关系& z" c: w; f( e; z7 O6 Y
date("Ymd",time());  201502128 m2 Y- n$ }; K* H* P
FROM_UNIXTIME(dateline, '%Y%m%d')
: I8 S) k1 H0 i
1 Y- K' U1 \& c* y' J前者用于PHP,后者用于数据库调用的字段的格式化
; o. E2 @! u8 u
& h- h/ U$ H" g1 i7 w- N/ D: y调用图片附件
3 `6 C2 ^9 H0 [3 u4 F<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->
9 w/ B3 f, \4 Z1 E" M( u! S5 C2 v
* E$ e6 s9 B7 s: L3 h1 f' e& l. O" t; |
数据库循环嵌套调用: p5 a+ `9 j* Z  S2 p1 b$ y5 y
<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->: M+ u  x* U- s
<!--{loop $slides $slide}-->7 y( _/ y* k! |2 E$ }4 o9 s" ~
$slide[name]' Q9 x) S, `: z( L
<!--{/loop}-->+ n" S& b6 H3 O; u/ b* |( M6 J1 X, ^

6 `( X+ ~7 w6 Q
( y% A) {7 u- `2 ]% u0 K! |8 @& rucenter无法登录:& b9 g; l; m6 [
打开uc_server/model/admin.php$ h# ~5 r$ L. l* x7 F
找到第22行的
2 R6 y1 h0 N) ^$this->cookie_status = 0;
4 j  l2 v' |. ]. _# r) _/ q; h# ?4 v
5 N: c: i* J' P8 p( u. M. I5 g' i$ w+ y: b, [; G5 d. r+ v
改成  i9 x1 M- ?6 R9 G7 f
$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;
+ a; c- v. l) B7 ^9 ^0 e- ?  S: D# u1 m# q* T/ k' O5 w7 d$ W
" i& K/ z" \1 E! C

/ b6 `) s; M. k' K, z无刷新切换li标签并且同时加载框架页面:
( I& v1 j: X/ T* ^- E<script type="text/javascript">
5 i7 l4 [3 S# ?% m: h$ p4 `' i# kvar jq = jQuery.noConflict();. I$ W* U9 g  C" x- y  e0 G1 U
jq(function(){ 9 f1 g) d0 Q3 }6 \! M# K) ~8 e7 h
jq("#changemenu>li").mouseover(function(){
( x) Q: H* U  _. o( S' @7 p, Yjq("#changemenu>li").each(function(i){
+ A1 W8 `4 @4 T( G" o) u- ejq(this).removeClass("current");
2 S5 y5 r) f# M% k! ^; m});
% R( e8 D3 g5 o5 I9 e* w$ Ajq(this).addClass("current");
4 i& N" W6 j7 x0 c% pdocument.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';7 e( P. t% X% [( [4 A
}).mouseout(function(){ ! Z# i  O; _$ P3 U' R; v6 W4 ]8 @) a! i
jq(this).addClass("current"); $ G8 ^* v: N- j% |  u4 }8 l# Q$ [
});
6 f: y9 `; e# a$ w. D  N  V- G});' L/ H) ^4 T0 Q5 p, h' X
</script>
  R# {: X9 ?6 }. F, n<ul id="changemenu">% Q: [2 G; ^5 }  C
   <li class="current" dataid="1"></li>0 }0 p8 c/ C6 b# z) W' D
   <li dataid="2"></li>
. M7 t6 P1 S# k: a1 V</ul>
  U9 Q9 n* @/ ]" g2 o& Z1 i5 q<div id="changenr"></div>. |: Y2 J3 O" J- n  |9 I  [( f

1 Y1 c- z1 m% q; W! b4 Z3 f9 c9 M
8 _$ k1 {" P- I1 R
快速发帖
/ i9 t* T4 B! d4 n2 I0 M! z; E, r<a href="forum.php?mod=misc&action=nav">发布新话题</a>
& r, ^9 B8 k, Q+ `3 A9 k- L2 E& j9 d/ |* o; y+ w
  C' B0 p  n8 H+ y) O, C
' m' P/ F" ?3 x) _
DISCUZ JSON数据解析获取- ?0 l) l+ |) R- D
$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';
2 a( h6 k. e2 D. {$newstr = str_replace("\","",$str);1 u: b1 t7 W! N0 V
$data = unserialize($newstr);
5 ?2 z0 B9 ^" p- ]& J2 Eecho $data[sitename];//输出结果为源码哥6 M1 a- [, T6 ]; a6 n+ d

* G: M- z! m: P- f2 W7 N- z4 p0 I; j& [
- H: q! Y, \3 S
DISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:
1 `: L( V7 w" Q7 `- _) z1 c% i( M$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);
- n4 |* P1 G0 h- G$ |
4 `: c& r- ~/ G( y9 t# d0 o4 d2 g$ T( e/ ]% A# J0 w5 L& b; u5 D* I  J
修改为:& ~. U+ g4 P- ?7 j
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);
/ c6 Q! B7 Y5 B9 k$ y: X/ Q1 M! I+ c2 E, K/ K
2 u: K. X$ U# Y' N: l  o  p5 ~

% P4 o1 {  H4 d( ]; a# kLI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):
' k6 ?. r$ ~* v<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>6 u; z8 x( O* Q- @) `
<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 [$ W% ^" p, o3 X7 q<div class="list">
( O( ?4 a, |+ z        <ul>
; g0 w0 ]! z0 a) U; q# F        <li>源码哥</li>, Q7 s$ Z, i+ e! y# `: X
        <li>源码哥</li>9 B$ T( U; Y* x
        <li>源码哥</li>
7 u' Z0 ^/ O+ a+ n8 G) j% x& I8 ?        <li>源码哥</li>+ z3 R" U! l! B* e. x. y! g- C
        <li>源码哥</li>
2 X9 m0 n8 g/ L8 B9 t1 o; u5 S        <li>源码哥</li>5 h" [4 e- u9 N  E0 |) w% V8 a. c' V
    </ul>: T* i& ]- u+ [& a8 h' ~6 {
</div>4 H: y% L, J; h1 \) ^: j3 S9 |
<script type="text/javascript">
& ^* y# f( _/ ?' }! O    $('.list li:nth-child(3n)').css('marginRight', '0');
" o# K7 {  K: F* f</script>& l0 p; }1 ~2 e9 ^+ V1 v
/ Q9 V4 I9 F% b
) Z4 D( O, _3 R9 w! b

' p: K2 s' v) ~  b( z常用词汇1 A* {: o8 M7 ]5 ?
select 选择  G' m4 f" H' y8 F5 i
count 总数
7 p% n) c1 E" _1 N1 b, Btable 表8 m$ h1 ]; Z) I+ g0 r1 k
where 条件6 Q- t' [- a$ P( Q$ b3 m
result 结果4 i5 u4 f( R4 i
perpage 每页( D( }. f  V. X2 u9 @5 _
curpage 当前页. F  g3 ~5 ]: o; Q; U. L. ]
update 更新
/ L9 E* Y! a& Vdelete 删除
4 T, c6 S! D7 ~$ Yinsert 写入7 m& B' Y; H2 E9 ^0 a
dateline 日期
& `; N. M( p' {. A) f  Atime 时间
5 V. q( T3 V- S" n& m: uecho 输出   <?php   echo '123';   ?>0 T: H( a& b! J" J
multi 分页函数
: N3 y/ p- R" Z* S' t0 Iif 如果
4 q; D1 s) h' K9 R: }6 Y4 F% {/ Telse 否则1 t8 {8 k9 `- m: e. B+ n+ q: o( b
elseif
, x$ c* G; j9 c8 X3 E; qstart 起始' `2 h6 o3 x" x/ e) _* E
limit 限制  limit 109 y! A+ b6 I+ m# z, e0 F
DESC 倒序. f6 g7 t: ]- d8 s0 N9 r9 Q- _
ASC 正序
7 Z: y$ d& ^# u* O3 g; [5 x& _: h' r1 ^* }

  H! A  B) m) g2 D
4 M' Y3 D9 ]) ~5 s7 d9 ^活动帖发布页面核心处理文件:8 A; w% l2 c" B( k* K9 E
source\class\extend\extend_thread_activity.php. t2 T. c# C& I4 c+ ]  A0 d
  M6 T" n0 O4 P1 S
分类信息解析文件, G3 C5 }. f, C% K/ w
source\function\function_threadsort.php' d0 ^: l' e: S
Discuz模版运行php代码" c- p4 V5 c, l8 S; K
<!--{eval echo'源码哥';}-->
" _1 K3 y6 J9 c. b) I8 _5 Y( |: S# {. b6 w
<!--{eval}-->9 b, }+ y, e4 s* z5 ^0 M  F
echo'源码哥';
( W& |; q- I3 z  I+ r7 K5 z<!--{/eval}-->" n6 g% A8 M0 f" t5 {0 l1 q
标签获得焦点后触发js : P* a8 h# _! Y  a
onfocus="ymgcom()"
! n" q& f, i# b1 a6 }# d+ e. a6 U# b9 t) {' |4 S$ r
* O# N' Z! \( B% g( m" a, \
标签失去焦点后触发js 6 m' n% A) E8 p$ b' [

. P9 T( [7 C2 k$ s" G. V0 Monblur="ymgcom();": D# e; m+ O+ W' P# V% e4 a2 b
* X( k, `0 e) P8 a8 Q

$ z; n  b: |- @1 ]密码输出1*****6
( `9 l/ e  j4 W7 e, W//原密码为$_GET['password']
, ^4 X; T  r0 c0 f/ S/ H, z2 z# y$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);# l6 w% m1 j- |# E* V) K$ }  \
echo $password;
# |3 [5 L. q" H4 p! v8 ?: n2 v 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:26 , Processed in 0.157894 second(s), 61 queries .

Powered by 罗码网络! X3.4

© 2001-2017

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