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

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

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

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录; v- u. D, e; t, g9 b
<a href="member.php?mod=logging&action=login" title="登录">登录</a>
0 s2 A- v1 V. m6 B; Z( f
! M' v1 w+ W& D; _' l8 `, j+ l  Q注册* @  M& q* @5 L- Q7 Q
<a href="member.php?mod=register" title="立即注册">立即注册</a>  P# ^  T# Y7 K" p: i9 R+ _

  {4 _8 {7 t) v3 u# u* @忘记密码
9 n+ {  n8 Y: S<a href="javascript:;" title="找回密码">找回密码</a>% C/ F  y: N% f7 }

- ?3 T+ Y0 }3 I- {! M购买邀请码
7 n0 k& j* T/ g9 ^# F8 r3 vmisc.php?mod=buyinvitecode
  F+ v6 b6 ?) a) C6 ]  R$ `- w% `3 W4 j0 _
JS跳转
, {7 i: `% n) M/ e. E! Konclick="window.location.href='home.php?mod=mobile&do=friend';") ~7 K+ ]1 G$ `9 T4 j0 _9 Z

( E- ^: y# c3 t8 VJS更换class的名称9 ^( K& \$ ]5 J5 c% a- O$ g
document.getElementById('idname').className='a';( x  n# Z" T1 k5 k4 @0 U7 Z# ]
document.getElementById('idname').style.display='block';& n4 }: d, I# @2 `% L
document.getElementById("idname").style.marginTop="30px";
1 J5 x. {& w9 {: Y# F# N+ f9 a9 u! G
批量替换超链接:: ^9 r2 s6 I7 g0 Q4 M
href="[^"]*"8 h% B; j# k6 n2 ]
. d5 W1 P( j8 L' ?' A# x- k7 ~9 s
过滤DZ代码:
. p, U7 t. ^3 }( wpreg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
+ q/ u$ ]6 d! Z* z2 |: |0 l% }" \) ]& X7 ^3 q# V( Y
调用单个数据1 h1 P0 `1 S; Q2 {4 V1 _' l
$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));, |8 b9 E0 e. n- r' I2 T

4 S* W0 |  s! w调用统计数据
* g! m5 Z2 C% j; y6 r& e$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));
- Z( @5 j% j: M, I- a9 r/ o) g
单数据表调用0 Q/ C/ y5 P" K- m+ V% ^! [9 T
$perpage = 20;
0 b; I. {3 @2 `! v& \) L, `$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );
$ H! Y. S8 \; {: m) j( g$start = ($curpage-1)*$perpage;5 y4 [) U# c( y; F
$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));
, s5 x# H4 D, y+ a) @//$asklist' d5 v: a& m$ y7 {
$asklist = array();
+ x( u8 @" V* e0 s9 r6 zif ($askcount) {
% @8 |# E3 X0 `( o! J        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");
: ?; X# ]' v$ N! t        while ($value = DB::fetch($query)) {* ~) i! ?# g( O
                $asklist[] = $value;1 c8 u6 b5 e) v$ I! K  X! Q; I# F
        }
! t$ y; o* o! A}
* E+ w4 L  J# t2 q$ f; |$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");: Y  c% W' j3 z. ?
8 P9 v% Z9 A6 ~9 h0 A* V# j5 }" L

9 f& o( N( P  Y# c0 K, O
% k$ b5 z/ n$ O* ?& Q多数据表调用8 @+ S- M; P! ?7 a1 I6 [. M
$perpage = 40;
7 t3 V" I$ \! s! g6 u$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );/ O% `, I0 h/ F$ m1 j" L
$start = ($curpage-1)*$perpage;4 I/ R, l! v5 Y2 t4 \2 m. ^
$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 != ''"));, R7 W, m9 w. Y( n6 r! N
//$alist
/ K6 {8 Y3 ~; P( l7 g7 ?5 a  b! L$alist = array();
7 H5 S+ ?- u0 {7 W& M1 X. ~* e' _if ($acount) {+ z. F8 w& W; q( D2 l/ e
        $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");
: q8 |# Y5 z6 T; R4 U: c        while ($value = DB::fetch($query)) {* U- P; o5 t( |; d2 h  E6 I
                $alist[] = $value;, D1 Y- S( s# I/ V9 X; K
        }( ]5 ?; N9 O4 s0 z6 k
}0 e! `- q& y( i7 a( b( {4 i
$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");
; q: b) a- H% l/ c* X; F
# L5 P7 ?0 k9 }; Q& k% U
8 s# q" H3 N5 q8 e2 `( v
; Y; O6 E2 |5 ?; i. d8 `2 x前台数据显示& T& E7 {, V. |0 S9 V0 j
<!--{loop $alist $key $value}-->: @) J5 f* m2 }
<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->6 P- n1 d1 B6 S- V2 z, W3 R) P
<img src="$tupianfm"><br>$value[authorid]
. J# _8 o, g7 I7 x: g0 Z7 K<!--{/loop}-->
/ e0 g0 e8 h; F0 Z: [) @4 X, e4 ]! ]" a

' O5 l% b7 N, }( x7 l9 @取数据表中符合条件的第一条数据; u5 F2 ]% X- _, @3 A
$app=array();
: a, z7 ?0 L1 v$ e- i& G! e4 Y# j4 e$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");2 A! N: ?/ U: K/ ?8 ?) t3 }$ r" l& w

' _9 S. `: ~8 O' b( t: J
, p" d% U9 Y2 s0 B3 q: A+ m& L$ n" M0 k" M) z6 g& }7 V2 E9 S
人性化时间戳/ z3 K8 C6 }8 B
<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->, `8 I- \' E) M9 J" E& ?! A
<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->* T* k- h6 P' _4 f

6 V# m2 i) H  g: t
/ m( j5 S* @  p3 V' C5 m截取字符字数+ Z4 }& Y4 v9 ~
<!--{echo cutstr(这里填写参数,40)}-->
' z9 |3 Z1 [8 B6 y6 o. U4 c4 U* |7 ~5 \) U9 D. k: ]
; [: R- z! p7 E1 s7 T
过滤DISCUZ代码4 p1 j: K* s4 @' g  H6 c
preg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
; S: [, V5 @+ Y/ S
- Q3 k6 j, F$ V) b) ?
# I2 h4 x# b( y7 P6 q写入数据库
5 M' \; |. y- N& Y% E: X# ~if(submitcheck('tijiao')) {# y3 j; Z( j9 @" [1 f) _% r
        $setarr = array(
' M) B4 _& ~' U6 z                'tid' => $_GET['topicid'],1 U/ F. @! b6 `# g( |* d
                'name' => $_POST['name'],
1 _8 f7 ?2 u$ ~0 l5 q7 u) Q                'position' => $_GET['position'],) M1 Q9 P% ~/ ]$ D1 W- F
                'dateline' => $_G['timestamp'],
+ j) B8 s" s. c( g" m5 f        );
8 a% V2 ?; R# f        DB::insert('abc', $setarr, 1);
: |, E9 c& B5 G  p. {( _4 T        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");2 u7 Q: }$ ~' \
        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");) o% Q) e+ \6 V* s! _! V
        showmessage('成功的提示信息', "跳转地址");/ z1 e* a# ^( R% m& Z$ H" p" F3 p
}
2 R/ e9 q! g4 v5 X, a. |* `0 w: t$ w$ i: p) l/ I% F8 |

' b! `. X, l8 W# J/ a: X0 n: U$ M  f4 a
表单提交:* F) T7 e! A- W& j0 b; Z
<form action="do.php" method="post" autocomplete="off">
$ I6 ^0 n: z0 Q0 o, l        <input type="hidden" value="{FORMHASH}" name="formhash" />
! A' T7 G1 N* A% x# W6 y        最低奖金:<input name="qi" type="text" value="" /> # r' C* v# A, ~+ V  {  c
        最高奖金:<input name="end" type="text" value="" />  
' l( b/ o/ g% M# Q( u        <button value="true" name="tijiao" type="submit">提交设置</button>
! ]$ Z4 _' s' z7 ]. U        <input type="hidden" name="tijiao" value="true" />% l) P  g; f3 O# \' i+ h
</form>
) A, K! z) a8 n+ {. S1 f  ~+ N: j1 f/ ^, S8 W2 V
: E, y( n9 l& |) O$ g( J
; u. m$ L2 d. ?# R# V5 c- d0 c8 u
以下两个时间格式是对等关系1 d4 m5 P0 a9 |. y7 r' p/ O6 L
date("Ymd",time());  20150212- a% K* b/ [/ ^7 K# _1 y, B" L
FROM_UNIXTIME(dateline, '%Y%m%d')
+ g5 D' R- j$ u8 I% o$ D1 D6 i2 r6 h5 P% V  e
前者用于PHP,后者用于数据库调用的字段的格式化
* N5 w1 l0 m- U
9 J: f. [' L7 [. _% v4 R. M, Q调用图片附件' K! `7 c8 G" Y2 ~" U/ o) a7 f- q( b
<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->
4 T/ D. ?" k- r0 F' @0 W7 Q/ P+ f/ k; _- s
4 ?) S/ ]" y) U# }6 X* Y' }
数据库循环嵌套调用( \5 k; ^" A! l! @: z+ P: ]+ X1 M5 _- M
<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->
( ~  V4 O2 Y* c" _<!--{loop $slides $slide}-->
" z& Y- C  L/ b! Q6 m" f: ^1 f; D$slide[name]
( Z8 d& n: f, P1 ?- b  F<!--{/loop}-->) |+ i% S9 o; @+ t3 k

) s6 V5 M8 K/ P% g' {+ l+ h' e
: a+ p( C. [. F! j! @$ _! n3 Zucenter无法登录:
6 V" y/ ^7 h* {# D1 H打开uc_server/model/admin.php# F! X) n% t2 p( ^( C
找到第22行的( Y7 q0 S2 p+ M4 p1 Z" E, I5 `
$this->cookie_status = 0;
6 z- H7 B# F2 X5 S# X+ p3 R7 o  d: J% a) ~4 O( z' u( o  P

8 m) _! A, J1 ?# t9 Q改成
! ?2 J5 E2 T4 t6 G1 s/ Q$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;/ @: P1 L8 M  @! L" }
7 \) @: }; r7 _4 D; U- N

) ?( E8 C; D& }- F5 x/ t1 r0 H1 ^2 ^, N- H
无刷新切换li标签并且同时加载框架页面:
( _: r# Y9 S: S! ~7 i# P1 J5 g( v<script type="text/javascript">
- _. r& j) @2 `1 g# N0 Rvar jq = jQuery.noConflict();
6 V$ S2 j5 d% Q/ b+ y1 Gjq(function(){
  b6 x% [/ I1 p8 G3 l, B- P$ u3 ]jq("#changemenu>li").mouseover(function(){
# c- G6 s) l: o8 f' ^0 h! i9 Vjq("#changemenu>li").each(function(i){ 9 c! G. c$ Z3 y7 V4 t
jq(this).removeClass("current"); . s' V, H( _; e: `# C  B
}); - {* z' ?5 M; F' Y) f: ^/ m
jq(this).addClass("current");
6 I! F; X& b/ y# r: Pdocument.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';
- N* X" H5 L* @' P3 T/ ^}).mouseout(function(){
; o' o7 f6 U/ k6 h) gjq(this).addClass("current"); # |0 M+ {7 J3 \% Y3 e8 x, T
});
. q9 ^6 F  E/ m; y8 C& t3 F});( I% ^7 Q5 `. t( P' U
</script>
! x/ c& k) `' n! i9 n9 F<ul id="changemenu">3 }* C8 J: C: W/ \' ?6 N! D9 P
   <li class="current" dataid="1"></li>& ]' m+ \6 a! Q+ G4 ~( n$ D
   <li dataid="2"></li>. T% i4 Y( e& ?! b8 W6 l
</ul>% m8 {; s. P4 q2 J
<div id="changenr"></div>
- x/ o4 q  e4 A, P& e9 ^( h  |5 H0 X6 B2 ~
) _4 j+ i$ \2 f! ]0 X" ]

( Z7 |! }6 J; O9 M( J快速发帖% |; k+ ~6 w$ }8 Y
<a href="forum.php?mod=misc&action=nav">发布新话题</a>
9 _7 x* q+ @5 l& [) _
) X6 \, \- ]* ~* U3 p
  m/ ]8 e* ^- b; Q# m+ N; H$ @- x9 [9 ~- U2 B' t
DISCUZ JSON数据解析获取
5 t) ]' Q' d3 b$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';
4 X* q, Q, _" Y$newstr = str_replace("\","",$str);
. f/ X# q8 f% T* d% D$data = unserialize($newstr);$ r9 a, n" _( }. _
echo $data[sitename];//输出结果为源码哥1 w+ ]: `, V8 E
5 Z+ f. ~5 H8 @+ x

/ a5 r" f, ?. t- W
$ |" l/ l' p- YDISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:1 F0 \. b2 L- z
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);
" u3 E6 i0 N6 ~# u& ]
* J7 r$ [5 Y* l- R5 I4 N, D& \9 w! j2 I- N8 H% i0 M
修改为:
7 C1 y# F7 W1 \* X$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);
" R) _  B3 r' a2 ^* ^, Z1 N$ u7 t  S; @- D9 a

" D( Y$ `$ N+ ^1 X1 W% n7 ]8 z7 s$ l
LI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):+ @; K7 n8 z) h! ]( `
<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>
* ?6 i: [* M/ m- j+ e4 q# ]- I" @<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>
4 Y4 f  t: W1 t<div class="list">' y; K  K. r- r" T+ @* j3 _# h# \
        <ul>9 z- m1 g  I/ l3 v$ i/ s
        <li>源码哥</li>
9 W. G2 E! H3 `! z        <li>源码哥</li>
; W; u+ Y1 b3 q: K        <li>源码哥</li>: O& l" g& l2 B* I9 L' R( g
        <li>源码哥</li>, t0 {$ D- f3 X. n4 |
        <li>源码哥</li>% f# S% ^9 F, L( D
        <li>源码哥</li>& B+ X5 a) C+ g+ x$ M) w' j' h5 t
    </ul>
& B& W2 T' B4 g' }2 p1 j9 I# E+ l</div>
. G. v' y6 W9 L, n1 Y6 X$ g( o<script type="text/javascript">$ M5 u0 g- a3 E5 {$ B
    $('.list li:nth-child(3n)').css('marginRight', '0');, \, Q* f3 M3 U3 r8 ?0 n- a
</script>
8 c$ a, P& w( v# H5 @5 j
( A5 ?- ^% n2 \( w+ G+ \/ P  S
: J; t! P' p9 w* a" L9 c* s9 t9 J% V" c$ p
常用词汇) D, S6 }9 Q+ L8 @2 g4 t* n
select 选择
* @+ h* r8 ]( S% xcount 总数  U" L* v* r( a/ R! Y
table 表
- I8 n/ y& X. Owhere 条件: B; Q' J/ r8 Y5 ]6 L
result 结果. [: A0 L  g  `" Q9 t( m
perpage 每页
* I1 M8 @3 X7 |, X% Ucurpage 当前页4 z/ @# L& _. {8 G, ^) W$ p
update 更新+ ]7 m/ h; {( s' D" R( W7 x
delete 删除* k$ t6 l8 H) ?8 W6 @# c. P2 |4 ^9 d
insert 写入( X! F5 v9 h& [* H# l$ B% H
dateline 日期+ U. D- U6 ^5 |/ R. G
time 时间- r2 i/ N* D& c; _0 Y7 S! I0 q7 \2 G
echo 输出   <?php   echo '123';   ?>" y' S, }6 ~4 ^) N$ I# I; z
multi 分页函数. c1 c' o4 u+ A; ~
if 如果
$ }6 `& E  l0 g6 c1 p+ _, N2 ielse 否则
* H0 c. s  e5 v# eelseif ) N6 J* c& x( t- h( ?( q
start 起始( U7 Q5 a# K! x
limit 限制  limit 10. o' ?% K' J7 K4 X/ m/ {$ F, j
DESC 倒序* C5 z+ P* s/ W* }( B7 n( p! q
ASC 正序, m+ j* W. g+ Y2 {/ C
/ W9 E3 E8 ^" c2 r7 i

% Y8 b, ^/ W* X! Q& C6 l
0 Q7 ?, z5 H( ?' j% ~" T" O8 I活动帖发布页面核心处理文件:; Z! d1 ~* D% {( ~0 s
source\class\extend\extend_thread_activity.php0 _; t' v9 J5 _% q. O
+ O3 [4 C4 H( o
分类信息解析文件7 I  c% _8 M  D( D
source\function\function_threadsort.php
* N) m; d$ W( \4 L, `$ \8 q2 VDiscuz模版运行php代码
& S2 z" q3 D& x0 c3 A<!--{eval echo'源码哥';}-->
. S( T. x. s* ?
9 P7 Y) W9 o8 A1 _* Y<!--{eval}-->4 \0 e& X" l: R6 h8 C$ ?+ F) B
echo'源码哥';
2 f6 @7 }: I; k4 }) n<!--{/eval}-->
, H7 E4 X  h4 P标签获得焦点后触发js   ^2 p8 |$ d5 |  ]7 c4 L6 M7 s+ l
onfocus="ymgcom()"  x  Y  v$ Z( i# d% q, Y  l
7 Y$ s9 `2 t; x" P& a% n( t2 d- C
* M0 n! z, }# K# z9 z3 W
标签失去焦点后触发js
$ N% \5 h- L* t- d5 S
) d; W. d0 @8 P) A$ [3 C" yonblur="ymgcom();"
) c. f  |: m! @$ E/ u; N* m% t5 p, O8 P; V5 g! K3 r8 z6 J3 u
6 T: W3 V' B! s/ [  Y4 p
密码输出1*****6! t: o! n( B/ C) [+ p% q
//原密码为$_GET['password']
9 l& n/ [( }# m0 z! @, Y$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);
2 }7 D) X4 _" jecho $password;
# v( F- z5 M: [ 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 08:02 , Processed in 0.179909 second(s), 63 queries .

Powered by 罗码网络! X3.4

© 2001-2017

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