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

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

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

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录- e4 V7 s  H: p# I
<a href="member.php?mod=logging&action=login" title="登录">登录</a>4 \. l- C/ t& m* F9 y: m  U
8 E# O7 E0 G' A5 U/ V
注册
( s  k+ H2 y6 \, K- M, q& G9 w<a href="member.php?mod=register" title="立即注册">立即注册</a>
, Q* S: v; Q1 G, X7 w) \4 m! \/ G$ U
忘记密码
+ T7 \% N9 b9 W2 W<a href="javascript:;" title="找回密码">找回密码</a>% c/ _1 o: m5 R0 K
/ \  \- y2 [7 w& Y
购买邀请码 8 B* ]5 n, o: ]* N2 S! W+ o7 u/ f3 j# H
misc.php?mod=buyinvitecode/ `! d+ k* s2 F7 z( Z
, `0 T0 k* u$ p& x/ w  ]2 O
JS跳转; p0 B! J) n& N3 B: C
onclick="window.location.href='home.php?mod=mobile&do=friend';"
  }+ Y: P- o% ]" Z& |  r/ @
* b% R# ^" b4 x; n* Q4 ]JS更换class的名称
, l3 s% n: @3 V! r" e1 \document.getElementById('idname').className='a';2 @* o1 \& Q2 M# y; J3 L
document.getElementById('idname').style.display='block';( n9 t; X6 V1 S! l! @0 y2 s
document.getElementById("idname").style.marginTop="30px";8 T* b, \3 [9 T5 W5 F9 n0 ?4 k. T7 _' u
8 J1 ~1 c: o7 N; T0 N) a8 W
批量替换超链接:* p0 t" z, H4 K  B% p" K9 ^
href="[^"]*"9 C3 K( W% ]/ c2 C

' \1 q7 ^$ O' D) ^2 |& u过滤DZ代码:
$ c6 B: {: a8 [/ @3 Cpreg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));# c: p' J  x4 R- D. Z

5 V8 K: c/ A) f8 T调用单个数据
6 G$ L% m9 z5 ?. d& r7 ?8 H6 A$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));
/ |( U) r6 d& E7 E# J6 R* x0 ?. ^5 W/ P$ O  F/ f; b! Z
调用统计数据5 {* t) ~& R! v- D8 X/ h! `
$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));
# l* a  A& n8 d9 }4 j
4 A! ?2 I! }8 D0 ?1 [4 p* F, H单数据表调用
- p, J& O3 |% h4 ^) T/ y  F9 f$perpage = 20;
, a7 E# @7 M6 v3 U$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
9 f1 u. K7 S3 ~8 O: j3 u- V; f) o$start = ($curpage-1)*$perpage;; ]% W; S" Z3 f  v" k5 H
$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));/ [+ C' k% t6 E5 X" y! h
//$asklist
+ _) r0 z$ z; t" l" N3 p$asklist = array();/ T, y4 e5 E5 a* g
if ($askcount) {0 L1 e# b/ ]& M7 O1 @: M& ~
        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");
( @/ F' J3 o1 }1 a8 U        while ($value = DB::fetch($query)) {
+ K. F4 D+ a% S, H. [                $asklist[] = $value;
5 l( F$ q6 u- l3 n        }
2 k3 ~4 L( D, J6 ^  O3 o}' [! n7 G' R2 k
$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");- Z- u+ [" b9 X; u0 D

! r  ~0 J7 S- ]* }/ f$ m2 E) `1 E' Y6 W$ Q. V' h* ]( D% ]5 C

" \1 w" ~) z, ~  ~. P多数据表调用
0 b1 a% O' P9 N0 ?; l; h: P$perpage = 40;
4 ]  p6 l4 I0 J$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );" T: c- b# _  X# b9 q  r
$start = ($curpage-1)*$perpage;- M4 u8 o- a+ B/ 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 != ''"));( v) m5 ^; |  R7 I, U
//$alist. J; X/ p/ f" t, x  ?% G
$alist = array();1 S7 q+ r# }1 C; [) U
if ($acount) {$ m( r/ D) `- U+ Q
        $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");
0 |  I/ a* w! h        while ($value = DB::fetch($query)) {; E( e4 G* X& E2 ~; y2 u
                $alist[] = $value;0 `3 S- W( a! o, R* H
        }
4 A6 j/ @; C$ G1 N# M2 a- s}
( P% C) O0 q! w4 A: `$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");6 M" Y! q. p$ c7 S6 _# g( c: D
& x& R2 I( N* |5 `

4 @+ ~+ {6 D+ b/ ?$ N& a0 A7 r9 O# {& V, h! [# r" ?  x
前台数据显示- V. q' o! d2 L0 X) I& R
<!--{loop $alist $key $value}-->5 k9 q# ?: L3 U
<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->
5 f5 n: _6 h$ [0 A( {  B<img src="$tupianfm"><br>$value[authorid]7 l/ H0 _' n( N  a
<!--{/loop}-->
2 w, r' z$ b! V# f' m( \) o0 z& m0 R
' U$ v( k( g4 g7 D
* ^! f0 C1 Z0 }- i+ W取数据表中符合条件的第一条数据
7 w9 f/ |# o+ K! G6 I$app=array();8 D9 R4 n( U, \
$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");
; l! X7 w2 z9 g6 w, n+ E& T  M: \- ?3 f3 ~( [0 b

2 Q; ]' _7 P* i# \* r$ ]- U1 v) M/ r% D; ^0 E
人性化时间戳
$ h6 Q! |& |/ `, U1 v; z* n% z<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->
7 k! M! ^+ U5 a; t+ w0 I7 o<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->
" e7 B% U- U$ E4 O8 J
4 b- ]( p* i1 N" b0 N  I+ @3 _$ u% n; A$ w1 ], p5 A2 e
截取字符字数
7 k6 T7 h8 R' X9 e/ t<!--{echo cutstr(这里填写参数,40)}-->
% k$ r3 w# v6 n' M9 B  U4 C" x- r1 P- i1 P6 C/ ]* ]: [* M7 r# E
; l# r$ {" V7 O8 ?! `# b
过滤DISCUZ代码
  i# ~- m' E3 W& p/ ^' Mpreg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
: W1 ~) w4 o( }8 c% [4 y2 G+ t6 [* Y# w
# G: P' S8 y+ c8 A% o
" M% w) v- H- F5 |! O2 M写入数据库/ x; P1 d2 a4 f! _, v  n
if(submitcheck('tijiao')) {
6 q9 S7 C' U: G4 a6 s        $setarr = array(- |8 m4 u) I) j. @, ^( q
                'tid' => $_GET['topicid'],9 J; r2 Y$ N: Y/ \+ a
                'name' => $_POST['name'],
4 u9 U" U& |: s, h7 ^                'position' => $_GET['position'],
: C7 Y4 d* k$ ~! o  X# }                'dateline' => $_G['timestamp'],# S& Z9 k* v" x
        );" c& D  `' r. I) m# k- j
        DB::insert('abc', $setarr, 1);
1 a' `; _/ m5 W4 ^" Y# f4 o# M        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");
- B) R+ N& m! R" f3 r, Z. j+ M, h        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");
/ w; B" P3 U- F2 H- N        showmessage('成功的提示信息', "跳转地址");
' h7 J* l: N7 b- K/ F" W}! E8 |. E5 f: n: @( Y! m8 U

1 `: h/ }3 ?8 \2 R
' s9 x8 k: [' {# m, e. K, d
' |" Y" F8 L" H) u% K3 D. ^' T5 i6 H. ]( q1 C表单提交:4 Z. o; |7 ^' F/ M
<form action="do.php" method="post" autocomplete="off">9 k# s% i* }' ^4 \
        <input type="hidden" value="{FORMHASH}" name="formhash" />" S/ [( \, e  A9 B& ?
        最低奖金:<input name="qi" type="text" value="" /> - b" k9 \. h, U8 u* W) n' i
        最高奖金:<input name="end" type="text" value="" />  4 B& C4 z$ e. L( y+ C& ~: M& u8 t0 a9 u
        <button value="true" name="tijiao" type="submit">提交设置</button>  |4 x0 j& F" a5 @) n0 E( M
        <input type="hidden" name="tijiao" value="true" />4 C& i' M- G9 H  A6 U9 s9 W
</form>
) o! |" F  k; [  i) u9 d$ e7 T& m" L

0 N6 s# F) r) B9 V" t
5 D8 V; J/ z) G以下两个时间格式是对等关系
, P- r# V7 G+ i; v# H& \" x/ Ydate("Ymd",time());  20150212: \3 ?2 f3 v! v' k! f! I7 n( y
FROM_UNIXTIME(dateline, '%Y%m%d')
, W9 Q& \' i/ n5 i& ~" [2 T; C) W- _3 |% R0 O6 E  S
前者用于PHP,后者用于数据库调用的字段的格式化
+ J' z$ W+ K2 O8 K5 {6 u$ }1 d& u2 B0 \( y' [: x/ g6 i
调用图片附件; t8 z8 T/ Q# L) W
<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->
, \. U' J0 L! J+ ~! `. |8 I& n6 p3 f0 F& t- [/ W. b
9 W$ k" K, X# S2 Y
数据库循环嵌套调用9 J! d5 m' X) H$ [& @
<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->
( _" ]( j- V( e* ?! @+ u<!--{loop $slides $slide}-->$ D! O/ z1 m8 _6 A; P: y' M
$slide[name]
) P) X( Q" R  c# j& e4 u<!--{/loop}-->
# C: B  X' Y( P' o! H/ z1 B9 h
& X& ~' a. O. C9 U( w( G& _+ a9 y+ Y
: i/ y- q# B- X- q% b  cucenter无法登录:
* C2 |" Y# _8 f4 n% T) y打开uc_server/model/admin.php
/ G! m3 _5 E( q3 O( v3 t1 C5 }8 Q找到第22行的0 ~; G1 \' k4 d* X2 H) Q
$this->cookie_status = 0;
# _1 m' s' S- P; Y- f$ ?2 D  T. A; p0 x. ]

7 u: c, R$ K  T. H% u+ m" T改成
1 |7 M0 i% O1 f! o* ]# D$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;
, [* s' t; u$ @6 h- Q0 b7 z* |6 \4 g+ R+ `5 G

- Z6 v/ A8 G2 i3 y
! f+ h* w/ @! e; Y5 r* Z& ]无刷新切换li标签并且同时加载框架页面:
4 g- [! G' C$ C8 s+ _<script type="text/javascript"> ; W' t% v" s" i9 U% X& x
var jq = jQuery.noConflict();5 [% w# K3 \$ I( F; w
jq(function(){
6 N$ r; w6 L& T& I" y+ Hjq("#changemenu>li").mouseover(function(){
, y" {- p( G0 e$ A. v* H( Yjq("#changemenu>li").each(function(i){
, E: C' k) e6 m* N8 \1 s& Djq(this).removeClass("current");
8 H% s3 l% b+ P, T/ U}); 1 }9 z" B' T6 V% C$ ]' ~# }
jq(this).addClass("current"); ! B* U$ m6 Y* G: U' a( g0 Y
document.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';8 v# h' o" y3 s% n. k
}).mouseout(function(){ 4 d# k* X3 j" o7 q
jq(this).addClass("current");
+ B9 w' I7 g6 N7 e. K  y4 N});
( M0 q2 V6 N4 }0 {1 T8 c4 e. K});7 F" I: L3 D7 m9 j
</script>/ E/ X2 J4 `  P, [, s2 d( t
<ul id="changemenu">* k5 c7 G6 b4 d1 ]0 c, w  i
   <li class="current" dataid="1"></li>
* H7 [; {) l: |+ j   <li dataid="2"></li>
; H; r2 T3 V4 R+ e</ul>
1 {. F/ p) V0 Z7 j+ s<div id="changenr"></div>/ R8 t- I* e! O
( N9 Q# r( _) f' N0 y

% @7 I! Y5 n' \4 _( _* ^( r/ M& @1 ?& E+ N* v$ C8 j4 {
快速发帖% E# b# n6 S; D  g
<a href="forum.php?mod=misc&action=nav">发布新话题</a>& o" Q& m. _& ~' C! }

3 T% I, E" d% b" }4 j" P' z
2 r: o) P7 ~9 J8 z( _9 A6 Y" l0 Q3 |* @0 a1 ]
DISCUZ JSON数据解析获取$ O) T% |3 x2 e- N: q  M
$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';
" b' u6 M" ?9 C+ _  O$newstr = str_replace("\","",$str);: C/ i8 X; O5 q
$data = unserialize($newstr);
; p% C9 N$ u; l* D' \echo $data[sitename];//输出结果为源码哥% X5 l0 m5 Q; h2 h' {" N7 A

5 q7 o; i: X6 B' U) c1 F# `2 [2 Y/ K, ?$ f* Z' o( v% P

8 h) |( |, m4 R3 B$ RDISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:" K5 L& R+ n& d6 W# R
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);: w6 F( F* q  V8 h

! g0 w0 Q% u: J- L( m* x+ Y* U
8 r6 u0 I% `- Q9 g1 g; a3 l修改为:
4 k( F) g1 P& w$ ~$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);
/ h0 P: K5 z6 I' t. `- a2 }  m0 Q2 x  e- C0 X4 g' W6 L; _
3 r$ e+ {; D: H

. B( c: o# k" v3 N. ZLI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):/ m3 T$ p+ D4 Y3 ~! b, J4 `0 H
<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>
' G+ I+ n/ e% e5 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>
* m+ K8 N- \: K! x<div class="list">
! d" L# K3 L( I8 u$ c2 |        <ul>7 d4 j9 P+ y& X$ E. C, c* G* t
        <li>源码哥</li>( W% X, Q- x- ?/ s
        <li>源码哥</li>
4 S8 X% E# G8 ?* y3 U: r        <li>源码哥</li>
5 t- y- K$ \1 Z" q+ s' [        <li>源码哥</li>6 a+ _0 w8 F+ u; d
        <li>源码哥</li>& X0 A; A+ E# u3 T/ k
        <li>源码哥</li>7 o+ F7 h' g* @2 ~
    </ul>
1 t, Y, q% I# l) I</div>
5 ?# X& Z; @3 c0 Q1 P4 U. v" l<script type="text/javascript">
  Z- n( G4 G. u1 t6 N9 \" X, C, I* `    $('.list li:nth-child(3n)').css('marginRight', '0');
7 `1 ~2 ^8 S' f$ {</script>- |$ F  }6 U( K  J% v+ [* i0 T5 L

) H- f, K: V/ r2 g4 \$ W/ J) p2 i  j$ N6 @# K- `8 W5 _8 X
( G' W3 M4 y" x+ Y9 }3 s
常用词汇& ?, Z9 c% M) s3 m
select 选择' a, \# ?* D. [5 D
count 总数, W/ {. H) B/ o; P" X
table 表
. F& u$ [9 @$ W$ pwhere 条件
+ I# T  m$ B4 x5 Iresult 结果
: }# E; _  a3 o* |0 T# K5 yperpage 每页
7 ^0 x2 ^8 ]$ h- M  M- \. zcurpage 当前页
+ n: q" A& @6 Hupdate 更新* F2 H% U/ a3 r
delete 删除
9 o, }8 ^& ~7 kinsert 写入
4 o& M- J) ~% |+ R" |+ Cdateline 日期) F& ~* p# D( n4 H/ F# p' c
time 时间
* {+ |6 i2 M$ Q# Cecho 输出   <?php   echo '123';   ?>9 [+ ^6 ~1 d3 V4 n! Z' L  R0 M, f
multi 分页函数
  w4 \1 {3 n9 s/ Q; t, Nif 如果
3 j: c- z5 `! N9 S7 `0 Nelse 否则
* t# W4 V# S$ z+ x9 ~9 nelseif 0 }6 `3 k/ h0 z: m4 d: t# |
start 起始
" X) C+ U; t" m( c. p: _: wlimit 限制  limit 10
+ I! `' A# A( |8 Y4 [$ kDESC 倒序$ P6 X; i) V! s) l- }7 Z$ F* m
ASC 正序" d; W/ x. U% l; x6 s

$ \& a: C- J$ ^; F2 m$ z8 u  a- h/ }8 v2 n7 ?$ s- q

5 I6 y6 m# c1 k3 [活动帖发布页面核心处理文件:
2 a: R  `' {* a$ d' C7 M4 s8 [; j6 x) ysource\class\extend\extend_thread_activity.php) b. k0 H/ d! C/ ^4 l/ H2 |# e! j3 w
: F, u; e' x. V! s, z3 B0 D0 r
分类信息解析文件+ V2 ^$ R' r  f, D4 C* M
source\function\function_threadsort.php
7 p) l8 g6 A+ I; R' T! a  ?# r& BDiscuz模版运行php代码
1 ]# J, |1 q) `9 V3 I' V5 ~<!--{eval echo'源码哥';}-->
5 f3 A& d) |2 H8 N2 A3 z4 C* K3 z# R
/ r# J$ t1 w5 ^( B# I<!--{eval}-->
7 K- y  y( b2 r, \" F+ mecho'源码哥';
1 e7 z9 x6 e) H8 t: I) [<!--{/eval}-->- c3 p3 ]. f& y9 o6 w# }6 ]  J
标签获得焦点后触发js
0 t& b! T2 j$ T" H2 qonfocus="ymgcom()"
. n$ b4 |- c' [9 c* t! P9 r) \9 m
) A" R2 G8 s5 w; C  ^
标签失去焦点后触发js
9 i% L5 g7 R) g2 u5 `+ {1 G' X: G- t9 G. @0 M
onblur="ymgcom();"& q' E" F9 ~% q! ~, H# g" q

$ ~  M  [. ]5 D& ?6 }+ S
* O0 Q5 }! g" s4 Z% F- Y7 K" ~密码输出1*****62 v8 U6 h9 s. A- E) j
//原密码为$_GET['password']
- c6 ]+ M0 T/ W' [: L4 S$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);
  ^  e! Z5 O  b+ K0 H( T; decho $password;1 E: w4 K/ J+ T0 n1 \
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, 2025-5-6 11:54 , Processed in 0.181846 second(s), 60 queries .

Powered by 罗码网络! X3.4

© 2001-2017

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